Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 上次插入的读取Id_C#_Sql Server_Sql Server 2008 - Fatal编程技术网

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,这样我就可以继续了。这正是我想要的。普拉迪普,这正是我所说的,我正在寻找的。这没有帮助,但感谢您的尝试