首页 新闻 搜索 专区 学院

执行存储过程式的修改语句出错

0
悬赏园豆:5 [已关闭问题] 关闭于 2012-05-30 10:24

执行存储过程式的修改语句出错,为什么返回为空,急需帮助,感谢各位帮忙

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这是我的存储过程

小柑的主页 小柑 | 初学一级 | 园豆:6
提问于:2012-05-30 02:01
< >
分享
所有回答(4)
0

你先执行这个cmd,看是否有错误。

另外,你遇到异常了,应该把异常信息也罗列出来,这样我们才好分析。

从你 的代码看,是没什么问题的。

出现的问题可能是你的存储过程中有BUG的缘故。

无之无 | 园豆:5085 (大侠五级) | 2012-05-30 08:37
0

你的对象为空值,你看一下是sda还是pars

MingHao_Hu | 园豆:8 (初学一级) | 2012-05-30 09:05

怎么看呢

支持(0) 反对(0) 小柑 | 园豆:6 (初学一级) | 2012-05-30 09:18

@小柑: this.sda.SelectCommand应该是这个对象为空

支持(0) 反对(0) MingHao_Hu | 园豆:8 (初学一级) | 2012-06-05 09:10
0

不知道 是什么问题 改了下语句  可以了

 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;
        }

小柑 | 园豆:6 (初学一级) | 2012-05-30 10:23
0

this.sda.SelectCommand.Parameters.Add(pars);

这句话改成

this.sda.SelectCommand = cmd;

慧☆星 | 园豆:5555 (大侠五级) | 2012-05-30 11:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册