我想创建一个SQL语句,它将从textBox中取出的值插入到一列中,该列中的任何值都为NULL
我在C#中这样做,我想知道是否有人可以帮助我... 我写了命令的伪代码版本:
string newPhoneNumber = textBox.Text;
SqlCommand cmd = new SqlCommand(
"INSERT INTO table ([Tag ID])
VALUES ('" + newPhoneNumber + "')";
WHERE columnName = NULL"
cmd.ExecuteNonQuery();
答案 0 :(得分:5)
使用NULL而不是等于NULL:
WHERE columnName IS NULL
答案 1 :(得分:5)
首先,使用 SQL参数。这将阻止SQL Injection。不敢相信没有人提到过这个。 5个答案,到目前为止,我是唯一提到这一点的人。
像这样构建你的命令:
SqlCommand cmd = new SqlCommand(
"INSERT INTO table ([Tag ID]) SELECT TOP 1 @newPhoneNumber FROM [table] WHERE columnName IS NULL");
cmd.Parameters.Add("@newPhoneNumber", Sqldbtype.nvarchar).Value = textBox.Text;
cmd.ExecuteNonQuery();
答案 2 :(得分:3)
Insert Query
与Where
条款由于你的价值观已经存在,即使你像其他答案所说的那样写ColumnName IS NUll
,它也行不通。
您必须使用Update query
"Update tablename set first_field_name = first_value,
second_field_name = second_field_value WHERE columnName IS NULL";
此外NULL
不是值。它是一个州。这意味着(在前端)尚未分配内存。
例如C#中的字符串 - 如果未分配内存,则它们为空。他们没有空。
与问题相关的注释/警告,与答案无关:
始终注意SQL Injection。使用参数化查询(带@的那个。)。
答案 3 :(得分:3)
使用此查询, IS 为NULL。
"INSERT INTO table ([Tag ID]) VALUES (@PhoneNumber) WHERE columnName IS NULL"
使用ParametrizedCommand,您可以在其他答案中找到示例。
答案 4 :(得分:2)
有两个问题。在SQL中,NULL不等于任何东西,甚至不是NULL。即NULL = NULL
是假的。所以第一个问题是WHERE ColumnName = NULL
其次,SQL语法无效。使用INSERT .. VALUES
时,您无法指定where子句,您必须使用SELECT .. WHERE
或IF.. ELSE
。 e.g。
INSERT INTO table ([Tag ID])
SELECT TOP 1 @PhoneNumber
FROM YourTable
WHERE YourColumn IS NULL
或强>
IF EXISTS (SELECT 1 FROM YourTable WHERE YourColumn IS NULL)
BEGIN
INSERT Table ([tAG id]) VALUES(@PhoneNumber)
END
在这两个示例中,YourTable
是YourColumn
存在的表格。
最后避免在可能的情况下构建SQL语句的字符串连接。
string sql = // One of the queries above
cmd.CommandText = sql
cmd.Parameters.Add("@PhoneNumber", SqlDbType.Varchar).Value = textBox.Text;
cmd.ExecuteNonQuery();
答案 5 :(得分:1)
使用LINQ to SQL,它自动使用参数,消除了SQL注入的危险。
使用它比连接SQL语句更容易。