空值传入存储过程 假如我有个存储过程 P_GetName(@id varchar(20),type varchar(20))当在前台(C#)中调用P_GetName时,如果传入的type值是空值(即一个文本框没有输入数据)在c#代码中如何写才是正确的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BEGINIF type IS NULL ...ELSE ...END 在前台如何写?比如这样调用 sqlCmd.Parameters.Add("@type", SqlDbType.VarChar, 20).Value = ""; 对吗?还是sqlCmd.Parameters.Add("@type", SqlDbType.VarChar, 20).Value = ''; sqlCmd.Parameters.Add("@type", SqlDbType.VarChar, 20).Value = ""; 对吗?就是这样,传入一个空字符串就行了,另外也可在存储过程里面设置默认值 create procedure prco_dd @a nvarchar = ''ASbegin ...............end sqlCmd.Parameters.Add("@type", SqlDbType.VarChar, 20).Value = null; 楼主,可以在前台代码端判断文本框的内容,如果在指定存储过程参数时,指定一个空类型就可以了代码如下:...SqlParamater[] Para = new SqlParamater(2;if (textBox1.Text ==""){ Para[1] = new SqlParamater("@type",DBNull.Value)}else{ Para[1] = new SqlParamater("@type",SqlDbType.VarChar,textBox1.Text)}...@id这个参数自己设经可以了。 --修正楼主,可以在前台代码端判断文本框的内容,如果在指定存储过程参数时,指定一个空类型就可以了 代码如下: ... SqlParamater[] Para = new SqlParamater(2); if (textBox1.Text =="") { Para[1] = new SqlParamater("@type",SqlDbType.VarChar,DBNull.Value) } else { Para[1] = new SqlParamater("@type",SqlDbType.VarChar,textBox1.Text) } ... @id这个参数自己设经可以了。 在.net中的空值(即文本框中没有输入的情况下),并不是数据库中的null,而是以''保存的(空字符串),需要替换下的。 sqlCmd.Parameters.Add("@type", SqlDbType.VarChar, 20).Value = ""; sqlCmd.Parameters.Add("@type", SqlDbType.VarChar, 20).Value = textbox1.Text.Trim()==string.Empty?DBNull.Value:textbox1.Text; 这样才能满足你的要求. 如何保留小数点后面的0 SQL server2005复制问题 SQL相同产品相同 c# 操作数据库执行事务,数据保存一部分也提交成功的问题 怎样更改已有Mysql数据库的数据结构又不丢数据 一个挺愚蠢的问题 小弟第一次做数据库编程,希望有经验的朋友给点意见! SQL SERVER里哪个数据类型可以放上万长的字符?? sql 时间问题 DataEnviroment中调用存储过程怎么得到存储过程的返回值 关于存储过程调用另外一个存储过程的问题 触发器可以加上时间延迟吗
IF type IS NULL
...
ELSE
...
END
比如这样调用
sqlCmd.Parameters.Add("@type", SqlDbType.VarChar, 20).Value = ""; 对吗?
还是
sqlCmd.Parameters.Add("@type", SqlDbType.VarChar, 20).Value = '';
sqlCmd.Parameters.Add("@type", SqlDbType.VarChar, 20).Value = ""; 对吗?
就是这样,传入一个空字符串就行了,另外也可在存储过程里面设置默认值
create procedure prco_dd
@a nvarchar = ''
AS
begin
...............
end
代码如下:
...
SqlParamater[] Para = new SqlParamater(2;
if (textBox1.Text =="")
{
Para[1] = new SqlParamater("@type",DBNull.Value)
}
else
{
Para[1] = new SqlParamater("@type",SqlDbType.VarChar,textBox1.Text)
}
...
@id这个参数自己设经可以了。
楼主,可以在前台代码端判断文本框的内容,如果在指定存储过程参数时,指定一个空类型就可以了
代码如下:
...
SqlParamater[] Para = new SqlParamater(2);
if (textBox1.Text =="")
{
Para[1] = new SqlParamater("@type",SqlDbType.VarChar,DBNull.Value)
}
else
{
Para[1] = new SqlParamater("@type",SqlDbType.VarChar,textBox1.Text)
}
...
@id这个参数自己设经可以了。