如果texbox为空,我想在数据库中插入NULL。 我有2个文本框名称:txtBox1,txtBox2,txtBox3和此代码:
SqlConnection con = new SqlConnection(@"Data Source=ALEX-PC\SQLEXPRESS;Initial Catalog=Asig;Integrated Security=True;");
SqlCommand cmd;
.................
con.Open();
cmd = new SqlCommand("INSERT INTO asigpag( Data1,Data2,Data3 ) VALUES ('" + txtBox1.Text + "','" + txtBox2.Text + "','" + txtBox3.Text + "')",con);
cmd.ExecuteNonQuery();
MessageBox.Show("Succes ! ");
这正确地在数据库中为所有三个文本框插入数据。但是,如果其中一个文本框为空,则在数据库中它显示为空字段而不是NULL。
答案 0 :(得分:0)
您可以检查TextBox.Text
是否有空字符串
cmd = new SqlCommand("INSERT INTO asigpag ( Data1,Data2,Data3 ) VALUES (" + (!String.IsNullOrEmpty(txtBox1.Text) ? "'" + txtBox1.Text + "'" : "NULL") + "," + (!String.IsNullOrEmpty(txtBox2.Text) ? "'" + txtBox2.Text + "'" : "NULL") + "," + (!String.IsNullOrEmpty(txtBox3.Text) ? "'" + txtBox3.Text + "'" : "NULL") + ")",con);
答案 1 :(得分:0)
试试这个:
SqlConnection con = new SqlConnection(@"Data Source=ALEX-PC\SQLEXPRESS;Initial Catalog=Asig;Integrated Security=True;");
SqlCommand cmd;
.................
con.Open();
cmd = new SqlCommand(
"INSERT INTO asigpag( Data1,Data2,Data3 ) VALUES ('" +
string.IsNullOrEmpty(txtBox1.Text) ? null : txtBox1.Text + "','" +
string.IsNullOrEmpty(txtBox2.Text) ? null : txtBox2.Text + "','" +
string.IsNullOrEmpty(txtBox3.Text) ? null : txtBox3.Text + "')",
con);
cmd.ExecuteNonQuery();
MessageBox.Show("Success!");
答案 2 :(得分:0)
试试这个:
con.Open();
cmd = new SqlCommand("INSERT INTO asigpag( Data1,Data2,Data3 ) VALUES (" + GetDbValue(txtBox1.Text) + ", " + GetDbvalue(txtBox2.Text) + " , " + GetDbValue(txtBox3.Text) + ")",con);
cmd.ExecuteNonQuery();
MessageBox.Show("Succes ! ");
private String GetDbValue(String data)
{
if (String.IsNullOrEmpty(data)
return "NULL";
else
return "'" + data + "'";
}
您使用非常错误的方式将数据插入数据库,请考虑使用paramatrized查询。
您的查询容易受到Sql Injection
答案 3 :(得分:0)
你可以像这样添加条件:
con.Open();
cmd = new SqlCommand("INSERT INTO asigpag( Data1,Data2,Data3 ) VALUES ('" + txtBox1.Text==""?"null":txtBox1.Text + "','" + txtBox2.Text==""?"null":txtBox2.Text + "','" + txtBox3.Text==""?"null":txtBox3.Text + "')",con);
cmd.ExecuteNonQuery();
MessageBox.Show("Succes ! ");
或在
上查看http://www.codeproject.com/Questions/671726/Inserting-null-value-into-database-from-textbox-us
答案 4 :(得分:0)
这将检查文本框,如果框为空,则插入DBNull。它也是避免注射的参数。 同样值得看看为你的连接和命令使用语句,这里有一个很好的例子http://www.dotnetperls.com/sqldatareader
SqlConnection con = new SqlConnection(@"Data Source=ALEX-PC\SQLEXPRESS;Initial Catalog=Asig;Integrated Security=True;");
SqlCommand cmd;
con.Open();
cmd = new SqlCommand("INSERT INTO asigpag( Data1,Data2,Data3 ) VALUES ('@textBox1','@textBox1','@textBox1')",con);
cmd.Parameters.AddWithValue("@textBox1", string.IsNullOrEmpty(txtBox1.Text) ? (object)DBNull.Value : txtBox1.Text);
cmd.Parameters.AddWithValue("@textBox2", string.IsNullOrEmpty(txtBox2.Text) ? (object)DBNull.Value : txtBox2.Text);
cmd.Parameters.AddWithValue("@textBox3", string.IsNullOrEmpty(txtBox3.Text) ? (object)DBNull.Value : txtBox3.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Succes ! ");