protected void DelComm_Click(object sender, CommandEventArgs e)
    {
        Database db = new Database();
        int id = Convert.ToInt32(e.CommandArgument);
        IDataParameter[] parameters = new IDataParameter[11];        parameters[0] = (IDataParameter)Activator.CreateInstance(typeof(SqlParameter), false);
        parameters[0].ParameterName = "@F_ID";
        parameters[0].Value = id;        db.ExecuteProcedure("yx_del", parameters);    }//Database类摘录如下://类摘录如下:        /// <summary>
        /// 保护方法,打开数据库连接。
        /// </summary>
        protected void Open()
        {
            if (Connection == null)
            {
                Connection = new SqlConnection(ConnectionString);
            }
            if (Connection.State.Equals(ConnectionState.Closed))
            {
                Connection.Open();
            }
        }        public void ExecuteProcedure(String storedProcName, IDataParameter[] parameters)
        {
            Open();
//这里不知如何写了,不需要返回任何值
           ExecuteNonQuery();
        }谢谢!

解决方案 »

  1.   

    http://www.cnblogs.com/JoeDZ/archive/2008/09/26/1299496.html
      

  2.   

           public void ExecuteProcedure(String storedProcName, IDataParameter[] parameters)
            {
                Open();
               //这里不知如何写了,不需要返回任何值
               SqlCommand cmd = new SqlCommand();
               cmd.ComandText=storedProcName;
               cmd.CommandType = CommandType.StoredProcedure;
               foreach (SqlParameter para in parameters)
                    cmd.Parameters.Add(para);
               cmd.ExecuteNonQuery();
            }
      

  3.   


    编译器错误信息: CS0117: “System.Data.SqlClient.SqlCommand”并不包含“ComandText”的定义
      

  4.   


    [.NET]ADO.NET调用存储过程 
     
         一: 执行不带返回参数(Input)的存储过程
               1: 首先在数据库写个存储过程, 如创建个 addUser存储过程。
                      Create Proc addUser
                      @ID int,
                      @Name varchar(20),
                      @Sex varchar(20)
                      As
                      Insert Into Users Values( @ID, @Name,@Sex )           2:创建SqlCommand对象,并初始SqlCommand对象 如:
                  SqlCommand cmd = new SqlCommand( );
                  cmd.CommandText = "addUser";    // 制定调用哪个存储过程
                  cmd.CommandType = CommandType.StoredProcedure;     // 制定Sql命令类型是存储过程, 默认的为Sql语句。
                  cmd.Connection = con;    // 设定连接
               3:向SqlCommand对象添加存储过程参数
                 SqlParameter param = new SqlParameter( );   // 定义一个参数对象
                 param.ParameterName = "@ID";                    // 存储过程参数名称
                 param.Value = txtID.Text.Trim();                   // 该参数的值
                 cmd.Parameters.Add( param );                        // SqlCommand对象添加该参数对象
                 param = new SqlParameter( "@Name", txtName.Text.Trim() );  // 简写方式
                 cmd.Parameters.Add( param );
                4:SqlCommand对象调用执行Sql的函数。 如:
                      cmd.ExecuteNonQuery();
              
           二:执行带返回参数(Output)的存储过程
                1: 首先在数据库写个存储过程, 如创建个 queryUser存储过程。
                    alter Proc queryUser
                   @ID int,
                   @Suc varchar(10) output
                   As
                   select @Suc = 'false'
                   if exists( Select * From users where u_id = @ID )
                           select @Suc = 'success'
                2:创建SqlCommand对象,并初始SqlCommand对象 如:
                  SqlCommand cmd = new SqlCommand( );
                  cmd.CommandText = "queryUser";     // 制定调用哪个存储过程
                  cmd.CommandType = CommandType.StoredProcedure;     // 制定Sql命令类型是存储过程, 默认的为Sql语句。
                  cmd.Connection = con;    // 设定连接
                3:向SqlCommand对象添加存储过程参数
                   SqlParameter param1 = new SqlParameter( "@ID", txtID.Text );   // 添加输入参数
                   cmd.Parameters.Add( param1 );
                   SqlParameter param2 = new SqlParameter();         // 添加输出参数
                   param2.ParameterName = "@Suc";                       // 名称
                   param2.SqlDbType = SqlDbType.VarChar;         // 输出参数的Sql类型
                   param2.Size = 10;                                                   // 输出参数的Sql类型大小
                   param2.Direction = ParameterDirection.Output;  // 指定该参数对象为输出参数类型
                   cmd.Parameters.Add( param2 );
                4:SqlCommand对象调用执行Sql的函数。 如:
                      cmd.ExecuteNonQuery();
                      MessageBox.Show( param2.Value.ToString() );  // 输出输出参数的值
    输入参数的存储过程的示例:
       try
       {
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "addUser";
        
        SqlParameter param = new SqlParameter( );
        param.ParameterName = "@ID";
        param.Value = txtID.Text.Trim();
        cmd.Parameters.Add( param );
        param = new SqlParameter( "@Name", txtName.Text.Trim() );
        cmd.Parameters.Add( param );
        param = new SqlParameter();
        param.ParameterName = "@Sex";
        param.Value = txtSex.Text.Trim();
        cmd.Parameters.Add( param );
        //da.InsertCommand = cmd;
        
        if ( cmd.ExecuteNonQuery() == 1 )
        {
         MessageBox.Show( "添加成功" );
        }
        else
        {
         MessageBox.Show("失败");
        }
       }
       catch( SqlException ex )
       {
        MessageBox.Show( ex.Message );
       }
     
    输出参数的存储过程的示例:
        try
       {
        SqlCommand cmd = new SqlCommand( );
        cmd.CommandText = "queryUser";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Connection = con;
        
        SqlParameter param1 = new SqlParameter( "@ID", txtID.Text );
        cmd.Parameters.Add( param1 );
        SqlParameter param2 = new SqlParameter();
        param2.ParameterName = "@Suc";
        param2.SqlDbType = SqlDbType.VarChar;
        param2.Size = 10;
        param2.Direction = ParameterDirection.Output;
        cmd.Parameters.Add( param2 );
        
        cmd.ExecuteNonQuery();    MessageBox.Show( param1.Value.ToString() );
        MessageBox.Show( param2.Value.ToString() );
       }
       catch( SqlException ex )
       {
        MessageBox.Show( ex.Message );
       }
      

  5.   

            public void ExecuteProcedure(String storedProcName, IDataParameter[] parameters)
            {
                Open();
                SqlCommand cmd = new SqlCommand(storedProcName, Connection);
                cmd.CommandType = CommandType.StoredProcedure;
                foreach (SqlParameter para in parameters)
                cmd.Parameters.Add(para);
                cmd.ExecuteNonQuery();        }出错:
    SqlParameterCollection 仅接受非空的 SqlParameter 类型对象。谢谢LS,当前是想将此写成类,方便调用
      

  6.   

    我是手工敲进去的,CommandText少写了一个m。
      

  7.   

    谢谢各位,已解决
            public void ExecuteProcedure(String storedProcName, IDataParameter[] parameters)
            {
                Open();
                SqlCommand cmd = new SqlCommand(storedProcName, Connection);
                cmd.CommandType = CommandType.StoredProcedure;
                foreach (SqlParameter parameter in parameters)
                {
                    if (parameter != null)
                    {
                        // 检查未分配值的输出参数,将其分配以DBNull.Value.
                        if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                            (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        cmd.Parameters.Add(parameter);
                    }
                }
                cmd.ExecuteNonQuery();        }
      

  8.   

    如果你把foreach (SqlParameter para in parameters)
             cmd.Parameters.Add(para);
    改成cmd.Parameters.AddRange(parameters);
    在把cmd.CommandType = CommandType.StoredProcedure;
    改成cmd.CommandType =ct;整个方法 public void ExecuteProcedure(String storedProcName, IDataParameter[] parameters,CommandType ct)
            {
                Open();
                SqlCommand cmd = new SqlCommand(storedProcName, Connection);
                cmd.CommandType = ct;
                cmd.Parameters.AddRange(parameters);
                cmd.ExecuteNonQuery();         }
    是不是存储过程和SQL 都可以使用?
    嘿嘿