gpt4 book ai didi

c# - 从 SQL Server CE 数据库的最后一行读取一个值

转载 作者:行者123 更新时间:2023-11-30 20:55:27 24 4
gpt4 key购买 nike

我有一个包含一些列的数据库,其中一个列称为 ID (datatype = int)。
我需要知道最后一行的 ID 的值(对于最后一行,我指的是最后创建的)。

我试过了,但它给出了一个运行时错误:

string query = "SELECT * FROM Customer WHERE ID = (SELECT MAX(ID) FROM Customer)";
SqlCeCommand comSelect = new SqlCeCommand(query, connection);
SqlCeDataReader rdr = comSelect.ExecuteReader();
int ID = rdr.GetInt32(6);

(GetInt32(6)因为ID是第6列)

谢谢大家,对不起我的英语。

附言

Customer 是我的表,ID 是按升序设置的。创建的第一行有 ID = 0,第二行有 ID = 1 等等。

我需要知道最后一个 ID,因为当我创建一个新客户时,我想将他的 ID 设置为以前的客户 ID+1

错误:

Exception of type 'System.Data.SqlServerCe.SqlCeException' in System.Data.SqlServerCe.dll unhandled in user code

最佳答案

鉴于并发性可能没有问题,您可以简单地使用 ExecuteScalar 获取最后一个 ID打电话

string query ="SELECT MAX(ID) FROM Customer";
SqlCeCommand comSelect = new SqlCeCommand(query, connection);
int ID = (int)comSelect.ExecuteScalar();

ExecuteScalar 返回结果集中第一行的第一列。
查询 SELECT MAX(ID) 只返回一行,只有一列。所以 ExecuteScalar 非常适合这种情况。无需使用 ExecuteReader

但是,处理自动增量方案的正确方法是使用 an IDENTITY column当您插入新记录时,它将自动为您设置下一个值。在这种情况下,您已将具有 IDENTITY 属性的 ID 列标记为 TRUE,然后将数据插入到表 Customer 中,而没有为 ID 列传递任何值。插入后,您会立即检索数据库分配给您的 ID 列的值

伪代码

string query ="INSERT INTO Customers (Name, Address, .....) VALUES (.....)";
SqlCeCommand comInsert = new SqlCeCommand(query, connection);
comInsert.ExecuteNonQuery();
query ="SELECT @@IDENTITY";
SqlCeCommand comSelect = new SqlCeCommand(query, connection);
int ID = (int)comSelect.ExecuteScalar();

关于c# - 从 SQL Server CE 数据库的最后一行读取一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18300969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com