在C# 中檢索插入行的ID
向資料庫表中插入新資料時,擷取新產生的行的ID對於後續處理至關重要。本文探討了一個常見問題,即使用 ExecuteScalar() 取得插入的行 ID 始終傳回 0,即使實際 ID 非零。
提供的程式碼區塊:
MySqlCommand comm = connect.CreateCommand(); comm.CommandText = insertInvoice; comm.CommandText += "\'" + invoiceDate.ToString("yyyy:MM:dd hh:mm:ss") + "\', " + bookFee + ", " + adminFee + ", " + totalFee + ", " + customerID + ")"; int id = Convert.ToInt32(comm.ExecuteScalar());
嘗試執行插入語句並使用 ExecuteScalar() 擷取產生的 ID。但是,由於 ExecuteScalar() 方法在非標量上下文中的不可預測性,這種方法通常會失敗。
要可靠地檢索插入行的ID,可以使用以下程式碼:
MySqlCommand comm = connect.CreateCommand(); comm.CommandText = insertStatement; comm.ExecuteNonQuery(); long id = comm.LastInsertedId;
使用ExecuteNonQuery() 執行插入語句後,我們可以存取命令物件的LastInsertedId 屬性,該屬性提供了最近插入的產生的ID 排。建議使用此方法來可靠地檢索插入的行 ID。
此外,C# 不支援用於檢索插入的 ID 的 MySQL 語法 (last_insert_id())。相反,LastInsertedId 可以用作 MySqlCommand 物件的一部分來取得產生的 ID。
以上是為什麼在 C# 中檢索插入行的 ID 時 ExecuteScalar() 回傳 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!