【发布时间】:2014-05-05 05:17:05
【问题描述】:
我正在尝试从网格中删除记录但收到此错误。
不知道为什么会出现这个错误。
这是我的代码:
ALTER PROCEDURE [dbo].[hrm_Langauges]
(
@Name varchar(120),
@CreatedOn datetime,
@UpdatedOn datetime,
@CreatedBy bigint=0,
@UpdatedBy bigint=0,
@IsDeleted bit=0,
@status as varchar(50)
)
AS
BEGIN
BEGIN TRANSACTION
DECLARE @ID int;
SELECT @ID = coalesce((select max(ID) + 1 from Languages), 1)
COMMIT
if(@status = 'Display')
BEGIN
SELECT * FROM [dbo].[Languages];
END
else if(@status = 'Add')
BEGIN
IF EXISTS(SELECT Name FROM [dbo].[Languages] WHERE Name = @Name)
Begin
Return 0
End
Else
INSERT INTO [dbo].[Languages](Name,CreatedOn,CreatedBy) VALUES(@Name,@CreatedOn,@CreatedBy)
END
else if(@status = 'Update')
BEGIN
UPDATE [dbo].[Languages] Set Name=@Name,UpdatedOn=@UpdatedOn WHERE ID=@ID
END
else if(@status = 'Delete')
BEGIN
DELETE FROM [dbo].[Languages] WHERE NAME=@NAME
END
END
这是我的删除记录代码
string strcon = ConfigurationManager.ConnectionStrings["Dbconnection"].ConnectionString;
SqlCommand command;
protected void Page_Load(object sender, EventArgs e)
{
tblAdd.Visible = false;
Label1.Visible = false;
//GridView1.DataBind();
if (!Page.IsPostBack)
{
fillLanguageGrid();
}
}
public void fillLanguageGrid()
{
GridView1.DataSourceID = "SqlDataSource1";
GridView1.DataBind();
}
protected void btnDelete_Click(object sender, EventArgs e)
{
foreach (GridViewRow gvrow in GridView1.Rows)
{
CheckBox chkdelete = (CheckBox)gvrow.FindControl("chk");
if (chkdelete.Checked)
{
string name= Convert.ToString(GridView1.DataKeys[gvrow.RowIndex].Values["Name"].ToString());
// command.Parameters.Add(new SqlParameter("@status", SqlDbType.VarChar, 50));
deleteRecordByName(name);
}
}
fillLanguageGrid();
}
public void deleteRecordByName(string Name)
{
SqlConnection sqlConnection = new SqlConnection(strcon);
using (SqlCommand command = new SqlCommand("[dbo].[hrm_Langauges]", sqlConnection))
{
// define this to be a stored procedure
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@status", SqlDbType.VarChar, 50));
// define the parameter and set its value
command.Parameters.Add(new SqlParameter("@Name", SqlDbType.VarChar)).Value = Name;
command.Parameters["@status"].Value = "Delete";
//open connection, execute DELETE query, close connection
sqlConnection.Open();
command.ExecuteNonQuery();
sqlConnection.Dispose();
}
}
谁能建议我的 sp 不正确或我的 asp.net 代码。
执行代码时出现错误:
过程或函数“hrm_Langauges”需要参数“@CreatedOn”,但未提供该参数。
【问题讨论】:
-
阅读错误信息! 然后查看您的存储过程 - 它需要一个参数
@CreatedOn DATETIME。查看调用它的 C# 代码 - 它是否为@CreatedOn创建了一个SqlParameter并为它提供了一个值?????? -
删除记录不需要传那个参数。
-
如果它是在参数存储过程列表中定义的 - 那么它必须提供
标签: asp.net sql-server gridview stored-procedures