看着此處給出的示例: 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