在 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中文网其他相关文章!