如何使用C#通过OleDB和sql命令检索ACCESS数据库中的最后一个enty

本文关键字:数据库 ACCESS enty 最后一个 检索 命令 何使用 通过 OleDB sql | 更新日期: 2023-09-27 18:27:01

再次与我一起形成基本程序(使用visual C#2010)在我的大部分程序开始工作后,我开始添加一些小的"额外"

问题是:当我添加一个新项目时,我想打开一个MessageBox并写入新项目的id。

表=项目,字段=项目id

尝试使用:

cmd.CommandText = "SELECT LAST(item_id) FROM Item";
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
    id = dr["item_id"].ToString();
}

以下是完整的功能:

public void ItemInsert(string name,string creator,string publishing,string itemType,string genere, string year)
{
    string id ="";
    cmd.CommandText = "INSERT INTO Item  (item_name, creator_name,publishing_name,item_type,genre,year_publication,location) VALUES (@item_name, @creator_name,@publishing_name,@item_type,@genre,@year_publication,@location);";
    cmd.Parameters.AddWithValue("@item_name", name);
    cmd.Parameters.AddWithValue("@creator_name", creator);
    cmd.Parameters.AddWithValue("@publishing_name",publishing);
    cmd.Parameters.AddWithValue("@item_type", itemType);
    cmd.Parameters.AddWithValue("@genre",genere);
    cmd.Parameters.AddWithValue("@year_publication",year);
    cmd.Parameters.AddWithValue("@location", 0);//location=0 when in library
    con.Open(); // open the connection
    cmd.ExecuteNonQuery();
    //get item id
    cmd.CommandText = "SELECT LAST(item_id) FROM Item";
    OleDbDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        id = dr["item_id"].ToString();
    }
    con.Close();
    MessageBox.Show("Item ID : " + id+"","Added new item");
}

如何使用C#通过OleDB和sql命令检索ACCESS数据库中的最后一个enty

替换:

cmd.CommandText = "SELECT LAST(item_id) FROM Item";

带有:

cmd.CommandText = "SELECT @@IDENTITY";

在我的情况下,"IDENTITY"的东西没有起作用(可能是因为字段不是PK或AI)。它总是id"0"

我使用了这个查询:

cmd.CommandText = "SELECT TOP 1 item_id FROM Item ORDER BY item_id DESC";

注意,"TOP 1"等于其他sql方言的"LIMIT 1"

简而言之,在不设置更多cmd选项的情况下:

object scalarInt = new OleDbCommand("SELECT TOP 1 item_id FROM Item ORDER BY item_id DESC", con).ExecuteScalar();
int lastItemId = (int?) scalarInt ?? 0; 

其中,如果还没有条目,最后一行末尾的0是默认返回值。您可以使用1作为数据库Id,通常以1开头。