我刚开始使用 SQL Server 2008。我有一个 winforms 应用程序,它必须将应用程序中的数据插入数据库,并且一些文本框值可能为空。在谷歌搜索后,我发现了一些东西,但我会解释一下。
我发现此代码将记录插入数据库(不包括连接代码)
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 因为 ifStringName
为 null 或为空它设置DBNull.Value
现在我的问题是:
我不明白如何
cmd.Parameters.Add(new SqlParameter("@Name", StringName));
将 stringInsert 修改为 StringName。“@Name”只是字符串的一部分,所以符号“@”可能会做一些我不知道的事情?通常,当我需要以这种方式排除转义时,我会使用 @ 符号 @"c:\home"cmd.Parameters.AddWithValue("@Name" , StringName);
即使StringName
为空或为空,它是否正确使用?这是在 WinForm 应用程序中使用许多文本框将数据提交到 SQL Server DB 的正确方法吗?
谢谢