积极答复者
谁能帮我看看问题出在哪里

问题
-
这是我用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
我不知道我哪写错了?
答案
-
关于OldValues NewValues , 请参考手册的例子,没有你的完整代码和数据库,无法进行调试
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridviewupdateeventargs.newvalues.aspx
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridviewupdateeventargs.oldvalues.aspx
另外你的存储过程写法是错误的
孟宪会- 已标记为答案 KeFang Chen 2009年4月3日 3:40
全部回复
-
关于OldValues NewValues , 请参考手册的例子,没有你的完整代码和数据库,无法进行调试
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridviewupdateeventargs.newvalues.aspx
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridviewupdateeventargs.oldvalues.aspx
另外你的存储过程写法是错误的
孟宪会- 已标记为答案 KeFang Chen 2009年4月3日 3:40