簡體   English   中英

如何從控制台應用程序(C#)讀/寫到SQL數據庫

[英]How to Read/Write to SQL database from console application (C#)

我是SQL Server的新手。

如您所見,我上面的第一個函數只是用來調用第二個函數並傳遞一個列表作為參數。
現在,我從divedTrans char數組中解析信息。 每個值都代表一些東西,我正在控制台中顯示。 但是,我需要將其保存到SQL數據庫。 解析后的值。 我有一些SQLite的經驗,但是有點不同。 我用Google搜索了東西,這就是我能想到的。 但是,我發現沒有簡單的方法可以更新列。 我的列名與console.writeline代碼中提到的列名相同,例如,某些列是“數據記錄”,“ record_id”,“ article_code”等。因此,我希望將“數據記錄”列保存到例如,值為“ 2.1運動記錄”,然后在“ record_id”中為dividedTrans [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()));
        }
    }

}

我的建議是使用一些ORM(對象關系映射)工具。 對於C#,有2個主要版本,EntityFramework和NHibernate。 我更喜歡EntityFramework,因為它很簡單。

有許多寫入數據的方法。

一種方法是原始SQL,如C#中的SQL更新語句所示

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();
}   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM