前提:ddsjk.mdf数据库表dd中,tb11,tb12为int行,值允许为空。tbss,tbxm,tbyq为nchar型,不允许为空。
在一个click事件中:
{
string constr = @"Data source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ddsjk.mdf;Integrated Security=SSPI;User Instance=true ";
        
SqlConnection con = new SqlConnection(constr ) ;
            con.Open();
            SqlCommand cmd=new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "insert into dd(tb11,tb12,tbxm,tbss,tbyq)  values(" + tb11.Text + ",                 " + tb12.Text + ",'" + tbxm.Text.ToString() + "','" + tbss.Text.ToString() + "','" + tbyq.Text.ToString() + "');";
            
            cmd.ExecuteNonQuery();
            con.Close();
}
当tb11,tb12中输入数值时,程序能正常将数据导入数据库中。但是不输入值时,sqlexception报错。
另,早上的时候运行时,不输入数值能正常运行,今天傍晚再次测试的时候却报错了..很不解,所以求教!      

解决方案 »

  1.   

    判断一下,如果是空值,sql拼接一个 null 
      

  2.   

    设置下断点  跟踪下  看看sql语句    应该是错误的
      

  3.   

    cmd.CommandText = "insert into dd(tb11,tb12,tbxm,tbss,tbyq) values(" + tb11.Text + ", " + tb12.Text + ",'" + tbxm.Text.ToString() + "','" + tbss.Text.ToString() + "','" + tbyq.Text.ToString() + "');";
    纳闷了,楼主,你要是这要写不报错的话,就怪了。int tb=0;
    int tb2=0;if(tb11.text!="")
    {
    tb1=convert.Toint32(tb11.text)
    }
    else
    {
    tb=0;
    }if(tb12.text!="")
    {
    tb1=convert.Toint32(tb12.text)
    }
    else
    {
    tb2=0;
    }
    因为你的数据类型为int类型的,赋值时需要将string 类型转换成int类型的,还有把你的分号去掉,不需要啊!