执行存储过程式的修改语句出错,为什么返回为空,急需帮助,感谢各位帮忙
sql 执行语句
public DataSet AddUserModify(string sql,string ModifyUserID,UserInfo userInfo)
{
int i;
try
{
this.openCon();
this.cmd = new SqlCommand(sql, this.con);
this.cmd.CommandType = CommandType.StoredProcedure;
SqlParameter[] pars = new SqlParameter[] {
new SqlParameter("@UserID", SqlDbType.VarChar, 10),
new SqlParameter("@UserPassWord", SqlDbType.VarChar, 15),
new SqlParameter("@ModifyUserID", SqlDbType.VarChar, 15),
};
pars[0].Value = userInfo.UserID;
pars[1].Value = userInfo.UserPassWord;
pars[3].Value = ModifyUserID;
foreach (SqlParameter parameter in pars)
{
this.cmd.Parameters.Add(parameter);
}
SqlDataAdapter da = new SqlDataAdapter(cmd);
this.ds = new DataSet();
da.Fill(ds);
}
catch
{
i = -1;
}
finally
{
this.closeCon();
}
return ds;
}
现在出现的是这个问题,不知道怎么改了
int i;
try
{
this.openCon();
this.cmd = new SqlCommand(sql, this.con);
this.cmd.CommandType = CommandType.StoredProcedure;
SqlParameter[] pars = new SqlParameter[] {
new SqlParameter("@UserID", SqlDbType.VarChar, 10),
new SqlParameter("@UserPassWord", SqlDbType.VarChar, 15),
new SqlParameter("@UserIDModifyBefore", SqlDbType.VarChar, 15),
};
pars[0].Value = userInfo.UserID;
pars[1].Value = userInfo.UserPassWord;
pars[2].Value = UserIDModifyBefore;
foreach (SqlParameter parameter in pars)
{
this.cmd.Parameters.Add(parameter);
}
this.sda.SelectCommand.Parameters.Add(pars);
this.ds = new DataSet();
this.sda.Fill(this.ds);
ALTER PROCEDURE [dbo].[PRO_AddUserModify]
@UserID varchar(20),
@UserPassWord varchar(20),
@UserIDModifyBefore varchar(20)
AS
BEGIN
UPDATE UserInfo SET UserID = @UserID,UserPassWord = @UserPassWord WHERE UserID=@UserIDModifyBefore
END这是我的存储过程
你先执行这个cmd,看是否有错误。
另外,你遇到异常了,应该把异常信息也罗列出来,这样我们才好分析。
从你 的代码看,是没什么问题的。
出现的问题可能是你的存储过程中有BUG的缘故。
你的对象为空值,你看一下是sda还是pars
怎么看呢
@小柑: this.sda.SelectCommand应该是这个对象为空
不知道 是什么问题 改了下语句 可以了
public DataSet AddUserModify(string sql,string UserIDModifyBefore, UserInfo userInfo)
{
try
{
this.openCon();
this.sda = new SqlDataAdapter(sql, this.con);
this.sda.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter[] pars = new SqlParameter[] {
new SqlParameter("@UserID", SqlDbType.VarChar, 10),
new SqlParameter("@UserPassWord", SqlDbType.VarChar, 15),
new SqlParameter("@UserIDModifyBefore", SqlDbType.VarChar, 15),
};
pars[0].Value = userInfo.UserID;
this.sda.SelectCommand.Parameters.Add(pars[0]);
pars[1].Value = userInfo.UserPassWord;
this.sda.SelectCommand.Parameters.Add(pars[1]);
pars[2].Value = UserIDModifyBefore;
this.sda.SelectCommand.Parameters.Add(pars[2]);
this.ds = new DataSet();
this.sda.Fill(this.ds);
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
finally
{
this.closeCon();
}
return ds;
}
this.sda.SelectCommand.Parameters.Add(pars);
这句话改成
this.sda.SelectCommand = cmd;