日期:2014-05-18  浏览次数:20699 次

第一次来论坛,第一发问题,跪求高手帮助!
前提: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报错。
另,早上的时候运行时,不输入数值能正常运行,今天傍晚再次测试的时候却报错了..很不解,所以求教!

------解决方案--------------------


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类型的,还有把你的分号去掉,不需要啊!