标题:(出错求救)为过程或函数 IndexTree_Delete 指定的参数太多
取消只看楼主
wangzhen_andy
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:39
专家分:25
注 册:2008-9-22
结帖率:50%
 问题点数:0 回复次数:6 
(出错求救)为过程或函数 IndexTree_Delete 指定的参数太多
今天用DbHelper进行数据库的操作,编了几行代码。运行时出错如下:
未处理的“System.Exception”类型的异常出现在 SubwayPreplan.exe 中。

其他信息: 为过程或函数 IndexTree_Delete 指定的参数太多。

相关代码:
public void Delete(int ID)
        {

            int rowsAffected;
            SqlParameter[] parameters = {
                    new SqlParameter("@ID", SqlDbType.BigInt,8),    
                    new SqlParameter("@Title", SqlDbType.VarChar,50),
                };
            parameters[0].Value = ID;
            parameters[1].Value = Title;
            DbHelperSQL.RunProcedure("IndexTree_Delete", parameters, out rowsAffected);
        }
private void btndeleteNode_Click(object sender, EventArgs e)
        {
            clsIndexTree.ID = int.Parse(txtNodeId.Text);
            clsIndexTree.Title = txtNodeName.Text;
            clsIndexTree.Delete(clsIndexTree.ID);
            MessageBox.Show("编辑成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);

        }

小弟出学者,不知道怎样改,请大家指教!!
搜索更多相关主题的帖子: Delete IndexTree 函数 参数 
2008-10-03 20:28
wangzhen_andy
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:39
专家分:25
注 册:2008-9-22
得分:0 
第一次发帖,你是第一个回复,还是谢谢啦。。。。
2008-10-03 23:00
wangzhen_andy
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:39
专家分:25
注 册:2008-9-22
得分:0 
谢谢各位的大力支持,我会继续努力的,将代码进行到底!!
2008-10-04 13:13
wangzhen_andy
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:39
专家分:25
注 册:2008-9-22
得分:0 
回复bygg:我把Title相关的那两个语句注释掉了,运行出现错误,显示
未处理的“System.Exception”类型的异常出现在 SubwayPreplan.exe 中。

其他信息: @ID 不是过程 IndexTree_Delete 的参数。
想不明白了,我看的例程里的delete函数都是这样子写的。用DBHelper生成的那些代码不都是一样的吗?

回复球球:我按照您的意思修改了程序,但是结果还是出错,错误信息和原来的一样,参数过多。

其实我也是拿着师兄的程序,帮忙修改,他form里面的delete没有实现,我帮忙写的,真的不行就开学再去问问师兄了。。。。
2008-10-04 13:40
wangzhen_andy
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:39
专家分:25
注 册:2008-9-22
得分:0 
#region 存储过程操作

        /// <summary>
        /// 执行存储过程
        /// </summary>
        /// <param name="storedProcName">存储过程名</param>
        /// <param name="parameters">存储过程参数</param>
        /// <returns>SqlDataReader</returns>
        public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlDataReader returnReader;
            connection.Open();
            SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
             = CommandType.StoredProcedure;
            returnReader = command.ExecuteReader();
            return returnReader;
        }


        /// <summary>
        /// 执行存储过程
        /// </summary>
        /// <param name="storedProcName">存储过程名</param>
        /// <param name="parameters">存储过程参数</param>
        /// <param name="tableName">DataSet结果中的表名</param>
        /// <returns>DataSet</returns>
        public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                DataSet dataSet = new DataSet();
                connection.Open();
                SqlDataAdapter sqlDA = new SqlDataAdapter();
                sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
                sqlDA.Fill(dataSet, tableName);
                connection.Close();
                return dataSet;
            }
        }


        /// <summary>
        /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="storedProcName">存储过程名</param>
        /// <param name="parameters">存储过程参数</param>
        /// <returns>SqlCommand</returns>
        private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
        {
            SqlCommand command = new SqlCommand(storedProcName, connection);
             = CommandType.StoredProcedure;
            foreach (SqlParameter parameter in parameters)
            {
                command.Parameters.Add(parameter);
            }
            return command;
        }

        /// <summary>
        /// 执行存储过程,返回影响的行数        
        /// </summary>
        /// <param name="storedProcName">存储过程名</param>
        /// <param name="parameters">存储过程参数</param>
        /// <param name="rowsAffected">影响的行数</param>
        /// <returns></returns>
        public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                int result;
                try
                {
                    connection.Open();
                    SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
                    rowsAffected = command.ExecuteNonQuery();
                    result = (int)command.Parameters["ReturnValue"].Value;
                    //Connection.Close();
                    return result;
                }
                catch (System.Data.SqlClient.SqlException E)
                {
                    throw new Exception(E.Message);
                }
                finally
                {
                    connection.Close();
                }
            }
        }

        /// <summary>
        /// 创建 SqlCommand 对象实例(用来返回一个整数值)    
        /// </summary>
        /// <param name="storedProcName">存储过程名</param>
        /// <param name="parameters">存储过程参数</param>
        /// <returns>SqlCommand 对象实例</returns>
        private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
        {
            SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
            command.Parameters.Add(new SqlParameter("ReturnValue",
                SqlDbType.Int, 4, ParameterDirection.ReturnValue,
                false, 0, 0, string.Empty, DataRowVersion.Default, null));
            return command;
        }
        #endregion

    }

这个好像是用那个DBHelper的软件自动生成的吧。具体我也不太明白里面的操作。你帮我看一下吧。
2008-10-04 15:53
wangzhen_andy
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:39
专家分:25
注 册:2008-9-22
得分:0 
是啊,我是根据更新的那个函数自己修改出来的删除操作,我DBHelper里的存储操作的那个过程看不是太懂。我看那些个添加操作,更新操作只是前面的部分不一样,后面都是调用的RunProcedure(),那个语句是一样的,我就这样写了。

我DBHelper里面的那些函数操作都不是很明白,不知道有没有什么相关的资料呢?
2008-10-04 21:06
wangzhen_andy
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:39
专家分:25
注 册:2008-9-22
得分:0 
好的,谢啦
2008-10-05 01:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-236265-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.263341 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved