问题描述
我在 C# (Visual Studio 15) 中使用 Access 作为数据库。我想将表单条目(添加记录)保存到 Access 数据库中,并希望在成功保存后在 MsgBox 中显示相应的记录 ID。我尝试了以下方法:
setSystemTime
解决方法
你可以这样做:
using (OleDbCommand Command = new OleDbCommand("",conn))
{
Command.CommandText = "Your big ugly mess - need to change this to parmaters!)";
Command.Connection.Open();
Command.ExecuteNonQuery();
Command.CommandText = "Select @@Identity";
var intLastID = Command.ExecuteScalar;
MsgBox("Last id into database = " + intLastID);
}
如前所述,您确实想更改插入命令 - 它太长,太难维护,并且容易出现代码错误甚至 sql 注入。
但是,现在,您可以使用上述方法来获取/获取最后一个 ID 插入。
,为了解决我的问题,我有以下代码(来自凯文):
string query = "Insert Into Categories (CategoryName) Values (?)";
string query2 = "Select @@Identity";
int ID;
string connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Northwind.mdb";
using (OleDbConnection conn = new OleDbConnection(connect))
{
using (OleDbCommand cmd = new OleDbCommand(query,conn))
{
cmd.Parameters.AddWithValue("@CategoryName",OleDbType.Integer);
conn.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = query2;
ID = (int)cmd.ExecuteScalar();
}
}
现在,我的挑战是如何在成功创建记录后让 ID 出现在消息框中。请考虑我在这篇文章中与此相关的最早代码。