C# 上次插入的读取Id
我已经检查了几周了,结果发现语句在数据库级别工作。下面是我的代码,我觉得我离答案很近了,但不断从C# 上次插入的读取Id,c#,sql-server,sql-server-2008,C#,Sql Server,Sql Server 2008,我已经检查了几周了,结果发现语句在数据库级别工作。下面是我的代码,我觉得我离答案很近了,但不断从SCOPE\u IDENTITY()返回-1客户名称与自动增量一起保存到表中。我只需要Customer\u ID,这样我就可以将它放在Customer\u Address表中,以便对客户的地址进行一对多标识 提前感谢你的帮助 if (customer_ID == "") { // add new customer string SQL = "INSERT INTO Customer (
SCOPE\u IDENTITY()
返回-1
<代码>客户名称与自动增量一起保存到表中。我只需要Customer\u ID
,这样我就可以将它放在Customer\u Address
表中,以便对客户的地址进行一对多标识
提前感谢你的帮助
if (customer_ID == "")
{
// add new customer
string SQL = "INSERT INTO Customer (Customer_Name) VALUES (@customer_Name)";
SqlCommand sqlCommand = new SqlCommand(SQL, sqlConnection);
sqlCommand.Parameters.Add("@customer_Name", SqlDbType.VarChar, 100).Value = customer_Name;
// get last inserted Customer_ID
string SQL_customerId = "SELECT SCOPE_IDENTITY()";
SqlCommand sqlCommand_customerId = new SqlCommand(SQL_customerId, sqlConnection);
sqlConnection.Open();
sqlCommand.ExecuteNonQuery();
sqlCommand_customerId.ExecuteNonQuery();
// string SQL_ = "SELECT Customer_ID FROM Customer";
// SqlCommand sqlCommand = new SqlCommand(SQL, sqlConnection);
// int maxId = Convert.ToInt32(sqlCommand.ExecuteScalar());
sqlConnection.Close();
}
试试这样的。。
Output子句将帮助您获取插入的值,并使用该值可以插入到另一个temp或物理表中。这只是你问题的一个想法
CREATE TABLE customer
(
id INT IDENTITY(1, 1),
addres VARCHAR(500)
)
CREATE TABLE customeraddrs
(
custid INT
)
INSERT INTO customer
output inserted.id
INTO customeraddrs
VALUES ('a'),
('b')
SELECT *
FROM customer
SELECT *
FROM customeraddrs
您需要在与insert相同的事务中具有SCOPE_标识。以下内容应该对您有所帮助
string SQL = "INSERT INTO Customer (Customer_Name) VALUES (@customer_Name); SELECT Customer_Id FROM Customer WHERE Customer_Id = SCOPE_IDENTITY();";
SqlCommand sqlCommand = new SqlCommand(SQL, sqlConnection);
sqlCommand.Parameters.Add("@customer_Name", SqlDbType.VarChar, 100).Value = customer_Name;
sqlConnection.Open();
int id = (int) sqlCommand.ExecuteScalar();
你考虑过了吗?我已经研究了很多,似乎Scope Identity()是获取ID的最强大的方法。谢谢Jason,我知道在字符串中有ID,这样我就可以继续了。这正是我想要的。普拉迪普,这正是我所说的,我正在寻找的。这没有帮助,但感谢您的尝试