表A:
id(auto numbering) | value
--------------------+----------
1 | 100
2 | 200
3 | 100
4 | 500
在Visual Studio C#
中insert into tableA (name) values (300)
如何知道C#中新记录的id
号码(自动编号)?
答案 0 :(得分:0)
我建议你创建一个存储过程,如:
<强> SQL 强>
CREATE PROCEDURE NameOfProcedure
(
@value INT = NULL,
)
AS
BEGIN
INSERT INTO tableA
(
name
)
OUTPUT INSERTED.IDCol
VALUES
(
@value
)
END
GO
<强> C#强>
var cmd = new SqlCommand("NameOfProcedure", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@value", whateverValue);
var result = (int)cmd.ExecuteScalar();
答案 1 :(得分:0)
尝试这个:
con.Open();
string sql = "INSERT INTO Table(col2) output INSERTED.id VALUES(@value)";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@value", "300");
int new_id = (int)cmd.ExecuteScalar(); // here is the new id
答案 2 :(得分:-2)
选项: 您也可以在Query:
中执行此操作select top 1 id from yourtable order by id desc
但是如果你在Code Behind中需要这个:
将该查询复制到您的项目代码中。
public static int ExecuteQuery()
{
using (SqlConnection con = new SqlConnection("Your connection String here"))
{
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select top 1 id from yourtable order by id desc";
cmd.CommandType = CommandType.Text;
int result = cmd.ExecuteNonQuery();
return result;
}
}
}
使用:
Int id = ExecuteQuery();
答案 3 :(得分:-2)
一种方法是使用@@Identity
属性
using (SqlConnection con = new SqlConnection("Your connection String here"))
{
con.Open();
string sql = "INSERT INTO Table(col1,col2,col3) VALUES(@eimg, @etype, @flag) SELECT @@IDENTITY";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@eimg", imgByte);
cmd.Parameters.AddWithValue("@etype", 4);
cmd.Parameters.AddWithValue("@flag", false);
int id = Convert.ToInt32(cmd.ExecuteScalar());
}
@@identity
给出当前会话和表中最后插入的行ID。
有关详细信息,请检查此link有关检索上次插入ID的各种方法。