在C#程序中,怎么使用sql语句向数据库的一列中插入空值,但是该列也可能有值,这样的语句应该怎么写。

解决方案 »

  1.   

    如果是插入的话,数据库里面没有设置默认值在插入语句里面不写那列就可以了,自动就是空值如果是更新,可以用update table set columna=null
      

  2.   

    insert into TableName(ColumnName) values(NULL);
      

  3.   

    但是这列也有可能是有值的。就是说如果有值就要插入该值,没有的话就插入null。并不是就只插入null
      

  4.   

    可以用parameter, 为空时设置为DBNull.Value
      

  5.   

    update yourtable 
    set columna = null
    where columna is not null
      

  6.   

    如果是传参的话就这样:假设传的参数是value,"insert into TableName(ColumnName) values(" + value!=null?value:null + ")"
      

  7.   

    用变量的方式啊!insert into tablename values "'+textbox.text.trim()+'" where 条件textbox为空时,数据库表列中也为空,textbox不为空时,数据库表列中就是textbox的值!
      

  8.   

    更新上面语句:
    insert into tablename values '"+textbox.text.trim()+"' where 条件
      

  9.   

    很多人都没理解我的意思。我再说的清楚点。
    假如说数据库中有两列 column1,column2 都是可空的。
    现在我在程序里面定义了两个参数,string arg1,arg2。我现在就是想把arg1,arg2的值分别插入到column1,column2中。
    也就是用insert tablename1 (column1,column2) values (arg1,arg2)   但是arg1,arg2如果没有值,那就是null,就把null插入到数据库的column1,column2中。
      

  10.   


    弄完好象整个语句都变成null了
      

  11.   

    数据库中字段可为空的话,不用管它就是了。
    如果是必填字段,又不保存值,可以用类型的MinValue字段,如DateTime.MinValue。
      

  12.   


    怎么会呢?如果value不是null就返回value本身的值插入,如果是null就返回null值。为什么整个语句都变成null呢?不解。
      

  13.   


    string t1 = null;
    string t3 = "bbbb";
    string cmd = @"Insert into t_table_dictionary_test (f_table_engname,f_table_chnname,f_validSign,f_table_Type,f_compareDb2,f_re) values ('555','555','Y','555'," + t1 != null ? t1 : null + "," + t3 != null ? t3 : null + ")";看看是这样吗?
      

  14.   

    晕,我举的是个例子,最好使用参数形式,可以不用考虑不同类型的参数是否要用''、[]、##等等符号引起来的问题。比如像你这个句子里f_compareDb2如果是数字类型还没问题,如果是字符型就会出问题,因为t1 != null ? t1 : null两头没用''引起来,程序执行就会报格式不匹配的异常。
      

  15.   

    可能说得不是很清楚,给你举个例子。string sql = "insert into TableName(ColName) values(@paraFirst)";
    SqlCommand icomm = new SqlCommand(sql, conn);//conn是连接对象,我就懒得写怎么实例化它了。
    SqlParameter para = new SqlParameter("@paraFirst", SqlDbType.VarChar, 50);//SqlDbType.VarChar, 50根据你数据库里对应列的类型和长度修改。
    para.Value = t3 != null ? t3 : null;
    icomm.Parameters.Add(para);大概就是这样了。参考一下,根据实际情况改。
      

  16.   

    string arg1,arg2;
    /*对arg1,arg2的赋值代码*/
    //....
    //....
    //....
    /*****生成一个插入SQL语句(注意:此处column1,column2的类型是字符,其他类型自已转换吧)****/
    string commStr="insert tablename1 (column1,column2) values (";
    commStr+=((arg1==null || arg1.Trim().Length<=0)?null:("'"+arg1.replace("'","''")+"'"))+",";
    //    如果arg1没有被赋值或有效长度为0则插入空值(即null)    
    commStr+=((arg2==null || arg2.Trim().Length<=0)?null:("'"+arg2.replace("'","''")+"'"))+")";
      

  17.   

    insert into tablea(columnA) values(decode(@value,null,null,@value);
    这是Oracle的,不过一般都不这么写,呵呵. 
      

  18.   

    9楼,你那种永远都取不到NULL。
    动态拼SQL语句可以解决,也可以在DAL层加入判断传过来的参数是不是为空再选择如何搞