首页 > 解决方案 > c#将access数据库的最高id赋给一个变量

问题描述

我 100% 相信我将要描述的问题总有一天会得到答案。但是我还不够聪明,无法在stackoverflow中找到它。所以,不好意思再问了。但是,如果您有解决该问题的某人的帖子的链接,我会接受的!

这是我目前正在努力的一段 c# 代码:

OleDbConnection cnx = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\MyAccessDB.accdb");

string strReq = "SELECT ISNULL(MAX(CAST(FIELD_ID as Int)),0) + 1 FROM TBL_TABLE";
cnx.Open();
OleDbCommand cmd = new OleDbCommand(strReq, cnx);
OleDbDataReader dr = cmd.ExecuteReader();

if (dr.Read())
{
   int intId = (int)dr["FIELD_ID"];
}

cmd.Dispose();
cnx.Close();

这段代码应该将最大值 + 1 分配给访问表 TBL_TABLE 的 FIELD_ID。但是我在第 5 行有一个问题!!!我真的没有想法......有人可以帮忙吗?

标签: c#maxoledb

解决方案


再次感谢 Alex K 和 Nikki9696,这里有很好的工作代码:

OleDbConnection cnx = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\MyAccessDB.accdb");
string strReq = "SELECT MAX(FIELD_ID) AS ID FROM TBL_TABLE";
cnx.Open();
OleDbCommand cmd = new OleDbCommand(strReq, cnx);
OleDbDataReader dr = cmd.ExecuteReader();

if (dr.Read())
{
    int intId = (int)dr["ID"];
}

cmd.Dispose();
cnx.Close();

推荐阅读