27 个解决方案
#1
如果是插入的话,数据库里面没有设置默认值
在插入语句里面不写那列就可以了,自动就是空值
如果是更新,可以用update table set columna=null
在插入语句里面不写那列就可以了,自动就是空值
如果是更新,可以用update table set columna=null
#2
insert into TableName(ColumnName) values(NULL);
#3
#4
但是这列也有可能是有值的。就是说如果有值就要插入该值,没有的话就插入null。并不是就只插入null
#5
可以用parameter, 为空时设置为DBNull.Value
#6
你就让列默认为空不就行了
#7
update yourtable
set columna = null
where columna is not null
set columna = null
where columna is not null
#8
如果是传参的话就这样:假设传的参数是value,"insert into TableName(ColumnName) values(" + value!=null?value:null + ")"
#9
用变量的方式啊!
textbox为空时,数据库表列中也为空,textbox不为空时,数据库表列中就是textbox的值!
insert into tablename values "'+textbox.text.trim()+'" where 条件
textbox为空时,数据库表列中也为空,textbox不为空时,数据库表列中就是textbox的值!
#10
更新上面语句:
insert into tablename values '"+textbox.text.trim()+"' where 条件
#11
程序里边改怎么写就怎么写,数据库里设置默认值不就可以了
#12
我想问一下,你们都自己试过吗?
#13
很多人都没理解我的意思。我再说的清楚点。
假如说数据库中有两列 column1,column2 都是可空的。
现在我在程序里面定义了两个参数,string arg1,arg2。我现在就是想把arg1,arg2的值分别插入到column1,column2中。
也就是用insert tablename1 (column1,column2) values (arg1,arg2) 但是arg1,arg2如果没有值,那就是null,就把null插入到数据库的column1,column2中。
假如说数据库中有两列 column1,column2 都是可空的。
现在我在程序里面定义了两个参数,string arg1,arg2。我现在就是想把arg1,arg2的值分别插入到column1,column2中。
也就是用insert tablename1 (column1,column2) values (arg1,arg2) 但是arg1,arg2如果没有值,那就是null,就把null插入到数据库的column1,column2中。
#14
弄完好象整个语句都变成null了
#15
数据库中字段可为空的话,不用管它就是了。
如果是必填字段,又不保存值,可以用类型的MinValue字段,如DateTime.MinValue。
如果是必填字段,又不保存值,可以用类型的MinValue字段,如DateTime.MinValue。
#16
不是必填字段,但是该列可能是有值的。如果在程序里面赋值,而不去管他,那不就相当于值没插进,那就是错误了。
#17
怎么会呢?如果value不是null就返回value本身的值插入,如果是null就返回null值。为什么整个语句都变成null呢?不解。
#18
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_remark) values ('555','555','Y','555'," + t1 != null ? t1 : null + "," + t3 != null ? t3 : null + ")";
看看是这样吗?
#19
晕,我举的是个例子,最好使用参数形式,可以不用考虑不同类型的参数是否要用''、[]、##等等符号引起来的问题。比如像你这个句子里f_compareDb2如果是数字类型还没问题,如果是字符型就会出问题,因为t1 != null ? t1 : null两头没用''引起来,程序执行就会报格式不匹配的异常。
#20
好了。换了种方式。
#21
不过就是列数多的时候用起来不怎么方便。
#22
可能说得不是很清楚,给你举个例子。
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);
大概就是这样了。参考一下,根据实际情况改。
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);
大概就是这样了。参考一下,根据实际情况改。
#23
写了两个SQL语句吧?哈哈!
#24
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("'","''")+"'"))+")";
/*对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("'","''")+"'"))+")";
#25
insert into tablea(columnA) values(decode(@value,null,null,@value);
这是Oracle的,不过一般都不这么写,呵呵.
这是Oracle的,不过一般都不这么写,呵呵.
#26
9楼,你那种永远都取不到NULL。
动态拼SQL语句可以解决,也可以在DAL层加入判断传过来的参数是不是为空再选择如何搞
动态拼SQL语句可以解决,也可以在DAL层加入判断传过来的参数是不是为空再选择如何搞
#27
希望你别这样。两列写两个,十列写十个,百列了?人别写了。
#1
如果是插入的话,数据库里面没有设置默认值
在插入语句里面不写那列就可以了,自动就是空值
如果是更新,可以用update table set columna=null
在插入语句里面不写那列就可以了,自动就是空值
如果是更新,可以用update table set columna=null
#2
insert into TableName(ColumnName) values(NULL);
#3
#4
但是这列也有可能是有值的。就是说如果有值就要插入该值,没有的话就插入null。并不是就只插入null
#5
可以用parameter, 为空时设置为DBNull.Value
#6
你就让列默认为空不就行了
#7
update yourtable
set columna = null
where columna is not null
set columna = null
where columna is not null
#8
如果是传参的话就这样:假设传的参数是value,"insert into TableName(ColumnName) values(" + value!=null?value:null + ")"
#9
用变量的方式啊!
textbox为空时,数据库表列中也为空,textbox不为空时,数据库表列中就是textbox的值!
insert into tablename values "'+textbox.text.trim()+'" where 条件
textbox为空时,数据库表列中也为空,textbox不为空时,数据库表列中就是textbox的值!
#10
更新上面语句:
insert into tablename values '"+textbox.text.trim()+"' where 条件
#11
程序里边改怎么写就怎么写,数据库里设置默认值不就可以了
#12
我想问一下,你们都自己试过吗?
#13
很多人都没理解我的意思。我再说的清楚点。
假如说数据库中有两列 column1,column2 都是可空的。
现在我在程序里面定义了两个参数,string arg1,arg2。我现在就是想把arg1,arg2的值分别插入到column1,column2中。
也就是用insert tablename1 (column1,column2) values (arg1,arg2) 但是arg1,arg2如果没有值,那就是null,就把null插入到数据库的column1,column2中。
假如说数据库中有两列 column1,column2 都是可空的。
现在我在程序里面定义了两个参数,string arg1,arg2。我现在就是想把arg1,arg2的值分别插入到column1,column2中。
也就是用insert tablename1 (column1,column2) values (arg1,arg2) 但是arg1,arg2如果没有值,那就是null,就把null插入到数据库的column1,column2中。
#14
弄完好象整个语句都变成null了
#15
数据库中字段可为空的话,不用管它就是了。
如果是必填字段,又不保存值,可以用类型的MinValue字段,如DateTime.MinValue。
如果是必填字段,又不保存值,可以用类型的MinValue字段,如DateTime.MinValue。
#16
不是必填字段,但是该列可能是有值的。如果在程序里面赋值,而不去管他,那不就相当于值没插进,那就是错误了。
#17
怎么会呢?如果value不是null就返回value本身的值插入,如果是null就返回null值。为什么整个语句都变成null呢?不解。
#18
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_remark) values ('555','555','Y','555'," + t1 != null ? t1 : null + "," + t3 != null ? t3 : null + ")";
看看是这样吗?
#19
晕,我举的是个例子,最好使用参数形式,可以不用考虑不同类型的参数是否要用''、[]、##等等符号引起来的问题。比如像你这个句子里f_compareDb2如果是数字类型还没问题,如果是字符型就会出问题,因为t1 != null ? t1 : null两头没用''引起来,程序执行就会报格式不匹配的异常。
#20
好了。换了种方式。
#21
不过就是列数多的时候用起来不怎么方便。
#22
可能说得不是很清楚,给你举个例子。
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);
大概就是这样了。参考一下,根据实际情况改。
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);
大概就是这样了。参考一下,根据实际情况改。
#23
写了两个SQL语句吧?哈哈!
#24
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("'","''")+"'"))+")";
/*对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("'","''")+"'"))+")";
#25
insert into tablea(columnA) values(decode(@value,null,null,@value);
这是Oracle的,不过一般都不这么写,呵呵.
这是Oracle的,不过一般都不这么写,呵呵.
#26
9楼,你那种永远都取不到NULL。
动态拼SQL语句可以解决,也可以在DAL层加入判断传过来的参数是不是为空再选择如何搞
动态拼SQL语句可以解决,也可以在DAL层加入判断传过来的参数是不是为空再选择如何搞
#27
希望你别这样。两列写两个,十列写十个,百列了?人别写了。