[英]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
現在我的問題是:
我不明白cmd.Parameters.Add(new SqlParameter("@Name", StringName));
怎么cmd.Parameters.Add(new SqlParameter("@Name", StringName));
將stringInsert修改為StringName。 “@Name”它只是字符串的一部分所以也許符號“@”做了我不知道的事情? 通常我使用@符號,當我需要像這樣排除轉義@“c:\\ home”
是否正確使用cmd.Parameters.AddWithValue("@Name" , StringName);
即使StringName
為空還是null?
這是在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.