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

问题描述:

我已经创建了一个编程的文本文件,并将其保存到一个文件夹中,现在我需要将它保存到数据库(我已经创建了表格)中的一个表中,之后用这些文本文件填充复选框并将它们发送到FTP服务器。 这可能吗?如果是的话,我该如何开始做/我该怎么做? 下面是创建文本文件和创建表的代码的代码。如果您对代码有任何疑问,请随时提问。将文本文件保存到SQL并将其发送到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 
+0

我看不出SQL,复选框和FTP问题部分是如何相互关联的。请一次只提一个问题!这不是一个代码写入服务。 –

+0

好的,对不起。首先,我需要将文本文件保存到SQL中。然后用保存在SQL上的数据填充checbox,然后将选中的文件发送到FTP服务器。 –

+0

您可以编写一个存储过程,将您的文件名和内容存入其中,并将其保存到表中。 –

创建一个存储过程,它接受两个参数文件名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(); 
      } 
+0

我会尝试,很快我会给你反馈。谢谢 –

+0

我应该为其名称和内容替换'@ filename'和'@ filecontent'吗? –

+0

是....将两个参数替换为名称和内容。 –