C#生成SqlServer插入语句,给Values中的每个字段用变量赋值,如果变量为空且类型为int则出现【,,】的情况

出现两个逗号相连的情况,那么数据库会报错。如果用NULL替换,表中的值是"NULL",我想让表值为空(即没有任何文字),请问Values中的变量应该如何赋值?
private void foo()
{
string str1 = "";
string str2 = "";
string sql = "insert into table(a,b,c) values("+str1+","+str2+",'str1和str2均为int或decimal类型')";
/*这是错误的SQL语句,也不希望出现【NULL,NULL,''】的情况*/
}

注:table()中的字段不可以省略,会出现其他状况。。

第1个回答  推荐于2018-04-10
连接时候判断一下str是不是null,如果是就用空字符串代替。本回答被网友采纳
第2个回答  2014-10-12
string str1 = "";
string str2 = "";
string str3="";
str1=(str1==""?"null",str1);
str2=(str2==""?"null",str2);
str3=(str3==""?"null",str3);
string sql =string.Format( "insert into table(a,b,c) values({0},{1},{2})",str1,str2,str3);
//前提是你的数据库中字段是int等数字类型的,并且设置成了允许为空。追问

string str1="";
//那么
str1=(str1==""?"null",str1);//的结果一定是
str1="null";//那么
string sql = "insert into table(a) values(null)";
/*在数据表中该字段的值显示为“NULL”,我需要的是该字段为空(即没有任何字符,包括NULL在内),就像没有对该字段做添加操作一样*/

追答

那个null是你的sql管理器的显示,并不是真的数据,即使你什么也不做,只要添加了一行,那里必然会显示null,如果说你连这个null也不想显示,那只能看看管理器有没有这种设置了(虽然没有任何意义)

第3个回答  2014-10-12
“+str1+” 全部改成'"+str1+"'追问

经你提醒,今天试了下,确实发现了问题,如果手动赋值str1=NULL,数据表显示的是NULL,而如果真的为空,是这种形式的:,相比之下,我赋值的方法明显是错误的,追加10分

本回答被提问者采纳
第4个回答  2014-10-12
表中该列设成可为空呢追问

因为必须给insert语句values中的变量赋值,如果变量为空,那么values中会出现“,,”两个逗号,中间没有值的情况,如果变量赋值NULL,那么数据表中会出现NULL,不希望出现这种有NULL的情况

相似回答