C# 存储过程问题

simx_023 2009-04-09 12:07:21
我的存储过程:

CREATE PROCEDURE userupdate

@id int,
@account varchar(50),
@password varchar(50),
@username varchar(50)
AS
declare @sql varchar(1000)
begin
set @sql="update userinfo set "
if @account is not null
set @sql=@sql+"account=@account,"
if @password is not null
set @sql=@sql+"password=@password,"
if @username is not null
set @sql=@sql+"username=@username,"
set @sql=@sql+"1=1 where id=@id"
exec(@sql)
end
GO

我的程序:

SqlParameter[] ParameterObj ={
new SqlParameter("@id",SqlDbType.Int),
new SqlParameter("@account",SqlDbType.Char,50),
new SqlParameter("@password",SqlDbType.Char,50),
new SqlParameter("@username",SqlDbType.Char,50)
};
ParameterObj[0].Value = this.userid;
ParameterObj[1].Value = this.account;
ParameterObj[2].Value = this.password;
ParameterObj[3].Value = this.username;
DataBaseCls.MainDataBase DbCon = DataBaseCls.MainDataBase.DataBaseClsInit();
DbCon.SqlExecuteQuery("userupdate", ParameterObj);

我想问一下,如果我的username没有值,使用这个存储过程是不是会报错,如何能解决,我如果只更新username,就不用去更新其他的account和password,只需要传递2个参数id和username
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cja03 2009-04-10
  • 打赏
  • 举报
回复
parameter.IsNullable = true;
jdhlowforever 2009-04-10
  • 打赏
  • 举报
回复
mark!
simx_023 2009-04-09
  • 打赏
  • 举报
回复
private Int16 userid;
private string account;
private string password;
private string username="";

这是我变量的初始值
simx_023 2009-04-09
  • 打赏
  • 举报
回复
对呀,我提供了,参数的,就是没给他赋值
simx_023 2009-04-09
  • 打赏
  • 举报
回复
这是我的基类
Cmd = new SqlCommand();
Cmd.Connection = ConnectionObj() as SqlConnection;
Cmd.CommandType = cmdtype;
Cmd.CommandText = cmdtext;
if (cmdparameter != null)
{
SqlParameter[] sqlparameter = (SqlParameter[])cmdparameter;
foreach (SqlParameter parameter in sqlparameter)
{
Cmd.Parameters.Add(parameter);
}
}
cja03 2009-04-09
  • 打赏
  • 举报
回复
参数一定要提供的吧?
只是你可以不赋值给它。
simx_023 2009-04-09
  • 打赏
  • 举报
回复
他给我提示:过程 'userupdate' 需要参数 '@account',但未提供该参数
lijunchen1007 2009-04-09
  • 打赏
  • 举报
回复
username没有值?
我认为如果username为null或者为“”都不会报错。
如果你只想更新username,可以不赋值给account和password,或者赋给他们空值
kingtiy 2009-04-09
  • 打赏
  • 举报
回复
不会报错呀,你的条件是 where id=@id

111,126

社区成员

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

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

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