簡體   English   中英

使用C#Winforms將行插入SQL Server

[英]Insert row into SQL Server with C# Winforms

我剛開始使用SQL Server 2008.我有一個winforms應用程序,必須將應用程序中的數據插入到數據庫中,並且某些文本框值可能為空。 谷歌搜索后如何搜索我發現的東西,但我會解釋。

我發現這段代碼將記錄插入DB(不包括連接代碼)

stringInsert += "INSERT INTO MyDatabase(dateTime, Name, Surname)";
stringInsert += "VALUES(@Date, @NameString, @SurnameString)";

SqlCommand cmd = new SqlCommand(stringInsert, con);

cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@Date", strTime));
cmd.Parameters.Add(new SqlParameter("@Name", StringName));
cmd.Parameters.Add(new SqlParameter("@Surname", StringSurname));

if (string.IsNullOrEmpty(StringName))
   cmd.Parameters.Add(new SqlParameter("@Name", DBNull.Value.ToString()));
else
   cmd.Parameters.Add(new SqlParameter("@Name", StringName));

但有人寫了方法cmd.Parameters.AddWithValue("@Name" , StringName);

在自動中執行if else,因為如果StringName為null或為空,則設置DBNull.Value

現在我的問題是:

  1. 我不明白cmd.Parameters.Add(new SqlParameter("@Name", StringName));怎么cmd.Parameters.Add(new SqlParameter("@Name", StringName)); 將stringInsert修改為StringName。 “@Name”它只是字符串的一部分所以也許符號“@”做了我不知道的事情? 通常我使用@符號,當我需要像這樣排除轉義@“c:\\ home”

  2. 是否正確使用cmd.Parameters.AddWithValue("@Name" , StringName); 即使StringName為空還是null?

  3. 這是在WinForm應用程序中使用多個文本框將數據提交到SQL Server數據庫的正確方法嗎?

謝謝

1)@Name是占位符。 您要求NET引擎將@Name占位符替換為相同命名參數的值。 (對於不支持命名參數的ADO NET Providers,這是不同的)
2)當你想在數據庫中插入一個NULL時,你應該使用DBNull.Value,所以你的代碼應該是cmd.Parameters.AddWithValue("@Name" , string.IsNullOrEmpty(StringName) ? DBNull.Value : StringName);
3)是的,這是正確的方法。 始終使用參數化查詢。 using聲明`

暫無
暫無

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

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