写了一条更新语句,数据库更新不了。就是一个Cer_Table,一个Visit_Table,其中Cer_Table字段有CerID,Name和StaID等,Visit_Table字段有CerID,Name,StaID和Ipad等,想要执行的结果是在Visit_Table添加一条记录,
下面的ipad,zsbh是已经定义的string变量
  SqlConnection MyConnection3= DB.creatConnection();//连数据库
  MyConnection3.Open();  SqlCommand MyCommand3 = new SqlCommand("Insert into Visit_Table (Ipad,CerID) values('" + ipad + "','"+zsbh+"')", MyConnection3);
  MyCommand3.ExecuteNonQuery();//这个语句可以执行,在Visit_Table添加一条记录,Ipad字段和CerID字段的值分别为ipad和zsbh,此时Name和StaID字段为空
  //下面这句可以执行,也就是把Visit_Table刚刚添加的记录Name字段和StaID字段分别设为自定义的‘Feng’‘1306’
  //SqlCommand MyCommand4 = new SqlCommand("Update Visit_Table set Name='Feng',StaID='1306' where CerID='"+ zsbh +"'",MyConnection3 );
  //下面这条语句我希望能够把Visit_Table刚刚添加的记录的Name字段(为空值)和StaID字段(为空值)分别设为Cer_Table中与其CerID值相同的文本,但是运行时,不报错,数据库中Visit_Table的Name和StaID字段仍然为空
  SqlCommand MyCommand4 = new SqlCommand("Update Visit_Table set Name=(select Name from Cer_Table where Cer_Table.CerID='" + zsbh + "'),StaID=(select StaID from Cer_Table where Cer_Table.CerID='" + zsbh + "') where Name='' and CerID='"+ zsbh +"'",MyConnection3 );  MyCommand4.ExecuteNonQuery();
  MyConnection3.Close();
这个问题怎么解决呀?是不是update语句的错误呀?

解决方案 »

  1.   

    你的Name空值应该等于null
    null和''有区别
      

  2.   

    我改成了
                SqlCommand MyCommand4 = new SqlCommand("Update Visit_Table set Name=(select Name from Cer_Table where Cer_Table.CerID='" + zsbh + "'),StaID=(select StaID from Cer_Table where Cer_Table.CerID='" + zsbh + "') where Name=null and CerID='"+ zsbh +"'",MyConnection3 );还是不行
      

  3.   


    问题就出在最后的where Name=null and CerID='"+ zsbh +"'
    我把name=null and去掉就可以了,不知道为什么
    我不想已经有name值的数据改掉,只想改name值是空的,怎么改哦?
      

  4.   

    把name=null 改成name is null就可以了