将文本文件保存到sql并将其发送到FTP服务器

时间:2017-08-16 13:10:19

标签: c# sql ftp

我已经以编程方式创建了一个文本文件,并将其保存到一个文件夹中,现在我需要将其保存到数据库中的一个表中(我已经创建了表),之后填写了一个带有这些文本文件的复选框并将它们发送到一个FTP服务器。 那可能吗?如果是这样我怎么能开始做/我应该怎么做? 这是创建文本文件的代码和创建表的代码。如果您对代码有任何疑问,请随时提出。

var numfatura = _transaction.TransDocument + _transaction.TransSerial + _transaction.TransDocNumber;

        using (StreamWriter writer = new StreamWriter("C:\\Users\\HP8200\\Desktop\\Faturas Teste\\" +numfatura + ".txt"))
        {
            string numcont = _transaction.PartyFederalTaxID;
            double numenc = _transaction.BillToPartyID;
            DateTime data = _transaction.CreateDate;
            double valor = _transaction.TotalAmount;
            int zona = transaction.UnloadPlaceAddress.AddressID;
            string zona2 = transaction.UnloadPlaceAddress.AddressLine2;
            double quantidade = transaction.Details.Count;
            string bonus = "0";
            string valorStr = valor.ToString(CultureInfo.InvariantCulture);

            writer.WriteLine($"{numcont};{numenc};{numfatura};{data:dd/MM/yyyy};{valorStr};{zona};");
            foreach (ItemTransactionDetail detail in transaction.Details)
            {
                var item = MyApp.DSOCache.ItemProvider.GetItem(detail.ItemID, MyApp.SystemSettings.BaseCurrency);
                double taxRate = MyApp.DSOCache.TaxesProvider.GetTaxRateFromTaxableGroupID(detail.TaxableGroupID, "PRT", "CON");
                string barcode = item.BarCode;
                var preconet = detail.TaxIncludedPrice;
                var precoantesdisc = detail.UnitPrice;
                string preconetStr = preconet.ToString(CultureInfo.InvariantCulture);
                string precoantesdiscStr = precoantesdisc.ToString(CultureInfo.InvariantCulture);
                writer.WriteLine($"{barcode};{taxRate};{precoantesdiscStr};{preconetStr};{quantidade};{bonus}");
            }

        } // create the text file
SqlConnection conn = new SqlConnection(@"Data source = 2c4138928627\Sage ; Database=ARMINDOData ; User Id=sa ; Password=sage2008+");
        SqlCommand command = new SqlCommand("IF OBJECT_ID('UXFaturas', 'U') IS NULL CREATE TABLE UXFaturas(Faturas char(250));", conn);
        conn.Open();
        SqlCommand insertCommand = new SqlCommand("INSERT INTO UXFaturas(Faturas) VALUES (*.txt)", conn);
        command.ExecuteNonQuery();

        MessageBox.Show("saved"); // create the table and insert the textfile

1 个答案:

答案 0 :(得分:0)

创建一个存储过程,该过程包含两个参数 fileName fileContent ,然后将其存储在 UXFaturas表中。

CREATE PROC USP_InsertFile(@fileName nvarchar(200),@fileContent nvarchar(max))
AS
BEGIN
     INSERT INTO UXFaturas VALUES(@fileName,@fileContent)
END

这里我假设您 UXFaturas表只有两列。

现在,您可以从C#ADO代码中简单地调用此存储过程,并传入正确的参数。

using (SqlConnection conn = new SqlConnection(@"Data source = 2c4138928627\Sage ; Database=ARMINDOData ; User Id=sa ; Password=sage2008+"))
            {
                SqlCommand command = new SqlCommand();
                command.Connection = conn;

                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "USP_InsertFile";

                command.Parameters.AddWithValue("@fileName",fileName);
                command.Parameters.AddWithValue("@fileContent",fileContent);

                command.ExecuteNonQuery();
            }