none
谁能帮我看看问题出在哪里 RRS feed

  • 问题

  • 这是我用GRIDVIEW编辑函数写的一段,功能是除了修改外,还要把修改的值当做表名,替换掉以前的表明,替换表明我是用存储过程写的!
       SqlConnection conn;
        string oldTableName;
        string newTableName;
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {

            foreach (DictionaryEntry entry in e.OldValues)   //获取更新行中的原始字段
            {
                oldTableName = entry.Value.ToString();
            }
            foreach (DictionaryEntry entry in e.NewValues)    //新录入的
            {
                newTableName = entry.Value.ToString();
            }
            Label3.Text = oldTableName;
            Label4.Text = newTableName;
            conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["key"]);
            conn.Open();
            SqlCommand cmd = new SqlCommand("atablename", conn);
            cmd.CommandType = CommandType.StoredProcedure;//调用存储过程
            SqlParameter[] prams =
            {
             new SqlParameter("@oldTableName", SqlDbType.NVarChar, 50),
             new SqlParameter("@newTableName", SqlDbType.NVarChar, 50)
            };
            prams[0].Value = oldTableName;
            prams[1].Value = newTableName;
            foreach (SqlParameter parameter in prams)
            {
                cmd.Parameters.Add(parameter);
            }
            cmd.ExecuteNonQuery();
            string sqlstr = "update e_station set e_name='"            //修改数据
                            + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "' where e_id='"
                            + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
              SqlCommand sqlcom = new SqlCommand(sqlstr,conn);

              sqlcom.ExecuteNonQuery();
              conn.Close();
              GridView1.EditIndex = -1;
               bind();

        }
    这是错误:
    程或函数 'atablename' 需要参数 '@oldTableName',但未提供该参数。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Data.SqlClient.SqlException: 过程或函数 'atablename' 需要参数 '@oldTableName',但未提供该参数。

    这是存储过程
    ALTER PROCEDURE [dbo].[atablename]
     -- Add the parameters for the stored procedure here
     @oldTableName NVARCHAR(1000),
        @newTableName NVARCHAR(1000)
    AS
    BEGIN
     set @oldTableName='z_'+@oldTableName  --加前缀了
     set @newTableName='z_'+@newTableName
      EXEC   sp_rename   'oldTableName',   'newTableName' 
    END
    我不知道我哪写错了?

    2009年4月1日 8:36

答案

全部回复