0

这是我插入数据的 SQL Server 存储过程:

Alter proc insert_stud1 
    @name varchar(20),
    @mobile int,
    @id int output
as
Begin 
    insert into stud1 values (@name, @mobile)

    set @id = @@identity;
End

对应的C#

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@name",SqlDbType.VarChar,20);
cmd.Parameters.Add("@mobile",SqlDbType.Int);
var ret = cmd.Parameters.Add("@i", SqlDbType.Int);
cmd.Parameters["@name"].Value=textBox1.Text;
cmd.Parameters["@mobile"].Value=int.Parse(textBox2.Text);

cmd.CommandText="insert_stud1";

con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show(ret.Value.ToString());
con.Close();
4

2 回答 2

3

您需要提供正确的参数名称并将参数方向设置为输出

SqlParameter idParameter= new SqlParameter("@id", SqlDbType.Int);
idParameter.Direction = ParameterDirection.Output;
cmd.Parameters.Add(idParameter);

行后:cmd.ExecuteNonQuery();结果ID可以得到如下

int id = int.Parse(cmd.Parameters["@id"].Value.ToString());
于 2013-03-13T05:48:49.367 回答
1

您发送“@i”而不是“@id”

于 2013-03-13T05:43:56.637 回答