看着此处给出的示例: https://stackoverflow.com/a/452934插入多行到MS SQL Server和检索的所有新表的ID后面
我明白,我需要通过一个循环来遍历和附加价值的条款,但我我缺少的是如何修改查询返回新创建的记录的所有ID,并在C#中检索它们?
比如我当前的代码可以在下面看到,我想改变它在一个查询中插入多行和检索新创建的Id占尽整数列表。
in_new_id = -1;
String query = "INSERT INTO " + DB_Base.DBTable_Customer_Order_Table + "(" + DB_Base.DBTable_Customer_Order_Table_Customer_ID + "," + DB_Base.DBTable_Customer_Order_Table_ProductId+")";
query += " OUTPUT INSERTED." + DB_Base.DBTable_Customer_Order_Table_ID;
query += " VALUES (@customerId, @productId);";
using (SqlConnection conn = new SqlConnection(GeneralConfig.DB_STR()))
{
SqlCommand sql_command = new SqlCommand(query, conn);
sql_command.Parameters.AddWithValue("@customerId", data_obj.customerId);
sql_command.Parameters.AddWithValue("@productId", data_obj.productId);
if (!String.IsNullOrEmpty(query) && sql_command != null && conn != null)
{
sql_command.Connection.Open();
if (sql_command.Connection.State == System.Data.ConnectionState.Open)
{
object out_new_id = sql_command.ExecuteScalar();
if (out_new_id != null)
{
in_new_id = (int)out_new_id;
}
sql_command.Connection.Close();
return ENUM_DB_Status.DB_SUCCESS;
}
else
{
in_new_id = -1;
return ENUM_DB_Status.DB_CONNECTION_COULD_NOT_OPEN;
}
}
}
return ENUM_DB_Status.DB_FAIL;
使用输出子句,以获得多个ID到另一个表。然后从新表中检索所有数据。这可以在没有循环的批处理中完成 – ashim
请注意,整数列表可能很容易检索,但不能保证(我知道)例如在列表中的第一个值将对应于第一行'VALUES'子句中,第二,第二等 –
@AshimDas你有如何做到这一点的例子,我无法找到多行插入仅为例单个插入 - >输出ID。 – Dizzle