我建立了一个表VipInfo,有以下几个字段:uid,birthday,address...  其中uid是必填项,其他都是选填项.但是,我在C#里写插入语句的时候就傻了眼了,我是这样写的"insert into VipInfo(uid,birthday,address) values('" + uid.Text +"','"+ birthday.Text +"','" + address.Text + "')"{这句有没有错不是重点,我重点想问的是下面}当我把textBox的空都填完,可以插入到数据库里面.但是,当我空出来的时候提示错误...不知道有没有哪位高手能指点一下我呢?我第一次弄数据库吖...1.如果插入的项是可有可无的,应该怎么写插入语句或这么设计数据库?2.关于生日(datetime类型)也有问题,我是用textBox来输入的,如果textBox为空,则提示插入的类型无法转换,应该如何解决呢??急吖..在线等,解决立刻结贴!

解决方案 »

  1.   

    先判断对应字段是否为空,据此拼凑出插入语句
    或者,为空就显式的插入空值(null,'')
      

  2.   

    直接在页面加个判断
    if(uid.text=="")uid.text="defaultvalue";
    if(birthday.text=="")birthday.text="defaultvalue";
    if(address.text=="")address.text="defaultvalue";
      

  3.   

    1 出错应该是数据类型不正确
    2 要加判断,如果空,就插入DBNull,否则转成DateTime型,要保证输入符合日期型哦
      

  4.   

    SQL语句没有问题,在插入前有些数据需要验证,例如: 必填字段不能为空,DateTime要判端它是不是合法的日期类型
      

  5.   

    "+ birthday.Text +"这个东西肯定不可能直接插进去的。。要TODATE(birthday.Text)一下的嘛
    另外如果是为空的数据也要在插入之前判断一下的。。
      

  6.   

    先判断对应字段是否为空,据此拼凑出插入语句 
    或者,为空就显式的插入空值(null,'')
      

  7.   

    1、不要直接那样拼SQL语句,可以用变量,那样容易判决值是不是空的,如果是空的则做相应的转换;2、birthday是时间类型,插入数据前要转换,而且必须是符合时间格式的;3、断点取得SQL语句执行看看!
      

  8.   

    不要那样写插入的Sql语句,这样万一被注入攻击......嘿嘿,就不太好了
      

  9.   

    1.插入之前 做判断 
    2.或者用个objectdatasource 数据源 把传递的参数都可为空
     
    就不会报错