Stored procedures ADO.NET中的存储过程错误
我这里有个情况。我的存储过程在SQL Server中完全可以正常工作 但是,我无法在ADO.NET中实现同样的功能 以下是我的存储过程:Stored procedures ADO.NET中的存储过程错误,stored-procedures,ado.net,Stored Procedures,Ado.net,我这里有个情况。我的存储过程在SQL Server中完全可以正常工作 但是,我无法在ADO.NET中实现同样的功能 以下是我的存储过程: Create Procedure bridge_Type( @EmpID INT, @Name varchar(50), @Mob2 numeric(10,0), @Email varchar(50), @Type varchar(50) ) AS DECLARE @TYPEID int Set NOCOUNT OFF BEGIN TRANS
Create Procedure bridge_Type(
@EmpID INT,
@Name varchar(50),
@Mob2 numeric(10,0),
@Email varchar(50),
@Type varchar(50)
)
AS
DECLARE @TYPEID int
Set NOCOUNT OFF
BEGIN TRANSACTION
INSERT INTO dbo.EmpType VALUES (@Type)
SET @TYPEID = SCOPE_IDENTITY()
IF @@ERROR <> 0
BEGIN
ROLLBACK
RETURN
END
Insert into dbo.Emp VALUES (@EmpID, @Name, @Mob2, @Email, @TYPEID)
IF @@ERROR <> 0
BEGIN
ROLLBACK
RETURN
END
COMMIT
您似乎错过了@Mob2参数中的int转换:
cmd.Parameters.Add(new SqlParameter("@Mob2", SqlDbType.Int));
cmd.Parameters["@Mob2"].Value = Convert.ToInt32(TextBox3.Text);
编辑:
谢谢大卫看到这一切。您要添加的最后一个参数名为@Emptype,但存储的进程希望将其命名为@Type。“无法将参数值从字符串转换为Int32。”这是错误的,因为这有点棘手。。dropdown1值必须转到其他表。。自动生成一个名为“TypeID”的列,然后将其发送回父表dbo.Emp(EmpType)。。我不知道怎么做..您的异常处理正在丢弃有用的信息。不要创建新的异常。要么重新抛出现有的异常,要么将现有的异常添加为内部异常,或者更好,因为您实际上没有以任何方式处理异常,所以不要在代码中的该位置捕获它。它表示“插入错误:过程或函数”bridge_Type“需要参数“@Type”,它的意思是-dropdown1值必须转到其他表。。有一个名为“TypeID”的列是自动生成的,然后将其发送回父表dbo.Emp(EmpType)。。我不知道该怎么做。@Girish:您之所以会出现这个错误,是因为您发送了一个名称不正确的参数。在存储过程中,它需要一个名为“Type”的参数,但您需要发送一个名为“Emptype”的参数。将“Emptype”的名称更改为“Type”以匹配预期的参数。啊,因此出现了两个问题:@Mob2上的强制转换错误和参数拼写错误。不知道我怎么错过了第二个:)答案编辑。
cmd.Parameters.Add(new SqlParameter("@Mob2", SqlDbType.Int));
cmd.Parameters["@Mob2"].Value = Convert.ToInt32(TextBox3.Text);