在C#程序中,怎么使用sql语句向数据库的一列中插入空值,但是该列也可能有值,这样的语句应该怎么写。
解决方案 »
- VS2005中的窗体哪个属性是让整个窗体变透明的?
- 菜鸟编程求助
- 求助:帮我解决给100分,关于C#自绘窗体的问题!
- 服务器运行.aspx页面出现了困惑我很久的问题
- Java玩完了,C#也可以跨平台了
- c/s工程怎样能编译成真正的 编译文件 包括里面的引用。
- 【跪求】《c#高级编程》英文版电子书
- C#中使用dialog弹出一个上传页面,上传文件解析后如何返回到原来的页面的文本框
- 真是世态炎凉啊!..没分没人帮忙啊..
- C# 怎麼才能做出一個具有換肤功能的程序???? Help!!!
- 【菜鸟提问】程序生成XML 再程序读取XML问题 (小弟第一次发贴 请见谅)
- C# winfrom 自定义控件如何文本换行?
set columna = null
where columna is not null
insert into tablename values '"+textbox.text.trim()+"' where 条件
假如说数据库中有两列 column1,column2 都是可空的。
现在我在程序里面定义了两个参数,string arg1,arg2。我现在就是想把arg1,arg2的值分别插入到column1,column2中。
也就是用insert tablename1 (column1,column2) values (arg1,arg2) 但是arg1,arg2如果没有值,那就是null,就把null插入到数据库的column1,column2中。
弄完好象整个语句都变成null了
如果是必填字段,又不保存值,可以用类型的MinValue字段,如DateTime.MinValue。
怎么会呢?如果value不是null就返回value本身的值插入,如果是null就返回null值。为什么整个语句都变成null呢?不解。
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 + ")";看看是这样吗?
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);大概就是这样了。参考一下,根据实际情况改。
/*对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("'","''")+"'"))+")";
这是Oracle的,不过一般都不这么写,呵呵.
动态拼SQL语句可以解决,也可以在DAL层加入判断传过来的参数是不是为空再选择如何搞