在数据库中将空文本框插入为NULL

时间:2014-05-23 08:26:25

标签: c# mysql sql

如果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。

5 个答案:

答案 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 ! ");