【发布时间】:2016-04-18 07:34:04
【问题描述】:
我在从尝试插入的 C# 工具执行 SQL 查询时遇到问题。
如果字符串为空(不是用户输入的),我需要插入 NULL 值。我尝试使用 DB 空值和普通字符串“NULL”来执行 NULL 插入,但我得到的只是一个空值(NULL 关键字的插入),这给了我错误。
如果有人对此有解决方案,请告诉我......
下面是我的代码
if (comboBox_ConfacValue.Text == "")
{
comboBox_ConfacValue.Text = DBNull.Value.ToString();
}
if (combobox_conversionDescription.Text == "")
{
combobox_conversionDescription.Text = "NULL";
}
try
{
con.Open();
if (MessageBox.Show("Do you really want to Insert these values?", "Confirm Insert", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
SqlDataAdapter SDA = new SqlDataAdapter(@" insert INTO Table1 (alpha1,alpha2,alpha3) VALUES ('" + comboBox_ConfacValue.Text + "','" + combobox_conversionDescription.Text + "','"+ combobox_Description.Text + "',')",con)
SDA.SelectCommand.ExecuteNonQuery();
MessageBox.Show("Inserted successfully.");
}
}
【问题讨论】:
-
空值必须在插入表 1 (...) 值 ('1',null) 而不是 ('1','null') 的插入中设置无符号。您的插入产生('1','null')。更好的方法是将参数设置为连接
-
您使用的是什么数据库?
-
如果有人键入 '); DROP TABLE Table1;--了解Sql Injection及使用参数
-
伙计们,我明白了...如果我使用子查询值怎么办,每个值都需要一个子查询,所以那时我不能使用你的建议?
-
@blogprogramisty.net.... 是的,我知道应该这样使用它,但是由于我对每个参数值都使用了子查询,所以我没有其他选择可以继续使用这种方法....跨度>
标签: c# .net winforms windows-applications