2017-08-30 99 views
-1

我是SQL服务器的新手。如何从控制台应用程序(C#)读取/写入SQL数据库

正如你所看到的,我上面的第一个函数只是用来调用第二个函数并传递一个列表作为参数。
现在我正在解析来自divideTrans字符数组的信息。 每个值都意味着某些东西,并且这是我显示给控制台的。 但是,我需要将其保存到SQL数据库。解析的值。 我有一些SQLite的经验,但是这有点不同。 我搜索了一些东西,这是我能想出来的。但是,我发现没有简单的方法来更新列。我的列名与console.writeline代码中提到的名称相同,例如某些列是“数据记录”,“record_id”,“article_code”等。因此,我希望将列“数据记录”保存为例如“2.1移动记录”的值,然后在“record_id”中划分divideTrans [0]的值。有人能帮助我一个有效的方式吗?

class save_parsed_data 
{ 
    static string connectionstring; 
    static SqlConnection connection; 

    public static void save_data(string transaction) 
    { 
     connectionstring = ConfigurationManager. 
       ConnectionStrings["testEnvironmentSAMPLE.Properties.Settings.sampleConnectionString"].ConnectionString; 

      List<char> dividedTrans = new List<char>(transaction.ToCharArray()); 

      if (transaction.StartsWith("21")) 
       StringWith21(dividedTrans); 

      Console.ReadKey(); 
    } 

    public static void StringWith21(List<char> dividedTrans) 
    { 
     using (connection = new SqlConnection(connectionstring)) 
     using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Sample_values", connection)) 
     { 
      DataTable codaTable = new DataTable(); 
      adapter.Fill(codaTable); 

      Console.WriteLine("\nData Record 2.1: Movement Record."); 

      Console.WriteLine("Record Identification: {0}", dividedTrans[0]); 

      Console.WriteLine("Article Code: {0}", dividedTrans[1]); 

      Console.WriteLine("Sequence Number: {0}", new string(dividedTrans.GetRange(2, 4).ToArray())); 

      Console.WriteLine("Detail Number: {0}", new string(dividedTrans.GetRange(6, 4).ToArray())); 

      Console.WriteLine("Reference Number of bank: {0}", new string(dividedTrans.GetRange(10, 21).ToArray())); 

      Console.WriteLine("Movement Sign: {0}", new string(dividedTrans.GetRange(31, 1).ToArray())); 

      Console.WriteLine("Amount: {0}", Convert.ToString(Int32.Parse(string.Join("", dividedTrans.GetRange(32, 15))))); 

      Console.WriteLine("Value Date: {0}", DateandTime(string.Join("", dividedTrans.GetRange(47, 6))).ToString("d")); 

      Console.WriteLine("Transaction Code: {0}", new string(dividedTrans.GetRange(53, 8).ToArray())); 

      Console.WriteLine("Communication Type: {0}", new string(dividedTrans.GetRange(61, 1).ToArray())); 

      Console.WriteLine("Communication zone: {0}", new string(dividedTrans.GetRange(62, 53).ToArray())); 

      Console.WriteLine("Entry Date: {0}", DateandTime(string.Join("", dividedTrans.GetRange(115, 6))).ToString("d")); 

      Console.WriteLine("Sequence Number: {0}", new string(dividedTrans.GetRange(121, 3).ToArray())); 

      Console.WriteLine("Globalization Code: {0}", new string(dividedTrans.GetRange(124, 1).ToArray())); 

      Console.WriteLine("Next Code: {0}", new string(dividedTrans.GetRange(125, 1).ToArray())); 

      Console.WriteLine("Blank: {0}", new string(dividedTrans.GetRange(126, 1).ToArray())); 

      Console.WriteLine("Linker Code: {0}", new string(dividedTrans.GetRange(127, 1).ToArray())); 
     } 
    } 

} 
+0

使用'实体framework'。 –

+0

“保存到数据库”意味着您需要插入到sql表中或进行更新。当你第一次将数据表读入DataTable时,可能会得出结论,你将会更新它。或插入? – Serg

+0

我需要将它插入表中。我稍后会更新它,但现在不行。现在桌子是空的。 –

回答

1

我的建议是使用一些ORM(对象关系映射)工具。对于C#,有2个主要的EntityFramework和NHibernate。我为此简单介绍了EntityFramework。

1

写数据有很多种方法。

一种方式是原始的SQL如图SQL update statement in C#

using (var connection = new SqlConnection(connectionString)) 
using (var command = connection.CreateCommand()) 
{ 
    command.CommandText = "UPDATE Student SET Name = @name where id = @id"; 

    command.Parameters.AddWithValue("@name", name); 
    command.Parameters.AddWithValue("@id", myId); 

    connection.Open(); 

    command.ExecuteNonQuery(); 

    connection.Close(); 
} 
相关问题