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

xingqi_2002 2008-07-08 12:58:40
在C#程序中,怎么使用sql语句向数据库的一列中插入空值,但是该列也可能有值,这样的语句应该怎么写。
...全文
1292 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingqi_2002 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 clxcxx 的回复:]
写了两个SQL语句吧?哈哈!
[/Quote]

希望你别这样。两列写两个,十列写十个,百列了?人别写了。
ViewStates 2008-07-08
  • 打赏
  • 举报
回复
9楼,你那种永远都取不到NULL。
动态拼SQL语句可以解决,也可以在DAL层加入判断传过来的参数是不是为空再选择如何搞
bbbbbb888888 2008-07-08
  • 打赏
  • 举报
回复
insert into tablea(columnA) values(decode(@value,null,null,@value);
这是Oracle的,不过一般都不这么写,呵呵.
yjvjom 2008-07-08
  • 打赏
  • 举报
回复
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("'","''")+"'"))+")";
格拉 2008-07-08
  • 打赏
  • 举报
回复
写了两个SQL语句吧?哈哈!
GhostAdai 2008-07-08
  • 打赏
  • 举报
回复
可能说得不是很清楚,给你举个例子。

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);

大概就是这样了。参考一下,根据实际情况改。
xingqi_2002 2008-07-08
  • 打赏
  • 举报
回复
不过就是列数多的时候用起来不怎么方便。
xingqi_2002 2008-07-08
  • 打赏
  • 举报
回复
好了。换了种方式。
GhostAdai 2008-07-08
  • 打赏
  • 举报
回复
晕,我举的是个例子,最好使用参数形式,可以不用考虑不同类型的参数是否要用''、[]、##等等符号引起来的问题。比如像你这个句子里f_compareDb2如果是数字类型还没问题,如果是字符型就会出问题,因为t1 != null ? t1 : null两头没用''引起来,程序执行就会报格式不匹配的异常。
xingqi_2002 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 GhostAdai 的回复:]
引用 14 楼 xingqi_2002 的回复:
引用 8 楼 GhostAdai 的回复:
如果是传参的话就这样:假设传的参数是value,"insert into TableName(ColumnName) values(" + value!=null?value:null + ")"


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


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

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 + ")";

看看是这样吗?
GhostAdai 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xingqi_2002 的回复:]
引用 8 楼 GhostAdai 的回复:
如果是传参的话就这样:假设传的参数是value,"insert into TableName(ColumnName) values(" + value!=null?value:null + ")"


弄完好象整个语句都变成null了
[/Quote]

怎么会呢?如果value不是null就返回value本身的值插入,如果是null就返回null值。为什么整个语句都变成null呢?不解。
xingqi_2002 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 smntbk 的回复:]
数据库中字段可为空的话,不用管它就是了。
如果是必填字段,又不保存值,可以用类型的MinValue字段,如DateTime.MinValue。
[/Quote]
不是必填字段,但是该列可能是有值的。如果在程序里面赋值,而不去管他,那不就相当于值没插进,那就是错误了。
smntbk 2008-07-08
  • 打赏
  • 举报
回复
数据库中字段可为空的话,不用管它就是了。
如果是必填字段,又不保存值,可以用类型的MinValue字段,如DateTime.MinValue。
xingqi_2002 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 GhostAdai 的回复:]
如果是传参的话就这样:假设传的参数是value,"insert into TableName(ColumnName) values(" + value!=null?value:null + ")"
[/Quote]

弄完好象整个语句都变成null了
xingqi_2002 2008-07-08
  • 打赏
  • 举报
回复
很多人都没理解我的意思。我再说的清楚点。
假如说数据库中有两列 column1,column2 都是可空的。
现在我在程序里面定义了两个参数,string arg1,arg2。我现在就是想把arg1,arg2的值分别插入到column1,column2中。
也就是用insert tablename1 (column1,column2) values (arg1,arg2) 但是arg1,arg2如果没有值,那就是null,就把null插入到数据库的column1,column2中。
xingqi_2002 2008-07-08
  • 打赏
  • 举报
回复
我想问一下,你们都自己试过吗?
wangruibaobei 2008-07-08
  • 打赏
  • 举报
回复
程序里边改怎么写就怎么写,数据库里设置默认值不就可以了
RichardSzwz 2008-07-08
  • 打赏
  • 举报
回复
更新上面语句:
insert into tablename values '"+textbox.text.trim()+"' where 条件
RichardSzwz 2008-07-08
  • 打赏
  • 举报
回复
用变量的方式啊!

insert into tablename values "'+textbox.text.trim()+'" where 条件


textbox为空时,数据库表列中也为空,textbox不为空时,数据库表列中就是textbox的值!
GhostAdai 2008-07-08
  • 打赏
  • 举报
回复
如果是传参的话就这样:假设传的参数是value,"insert into TableName(ColumnName) values(" + value!=null?value:null + ")"
加载更多回复(7)

110,026

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧