我有一个问题,我不知道为什么会这样!我试图在数据库表内的列中找到最大值,我使用以下代码:private void FrmCustomer_New_Load(object sender, EventArgs e){ int NewID; DataTable _Dt = CusVar.GetCustomersIDs(); if (_Dt.Rows.Count == 0) { NewID = 1; this.txt1.Text = NewID.ToString(); DataRow _Row = CusVar.GetCustomersIDs().Rows[0]; MessageBox.Show(Convert.ToString(_Dt.Rows[0]["MaxID"])); }}代码正在运行,但它给出了 1 虽然表中没有记录?我使用 C# 和 Access 数据库 ACCDB。我在 Cls_Customers 中使用这个函数:public DataTable GetCustomersIDs(){ DAL.DataAccessLayer DAL = new DAL.DataAccessLayer(); DataTable Dt = new DataTable(); Dt = DAL.DataSelect("Select Max(CustomerID) AS MaxID From TblCustomers", null); DAL.CloseConn(); return Dt;}请问这是什么问题?
3 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
这是您的查询:
Select Max(CustomerID) AS MaxID
From TblCustomers
这是一个聚合查询。no 的聚合查询group by总是返回一行——不管是否有任何行匹配。
单行中返回的值是NULLfor MaxId。
我非常怀疑你想做什么。如果您想要最大 id - 如果表为空则没有行 - 然后执行:
select c.CustomerID
from TblCustomers c
order by c.CustomerID desc
fetch first 1 row only;
(这使用 ANSI/ISO 标准语法,因此确切的逻辑可能取决于您的数据库。)
我的怀疑是,然后您想将此 id 用于insert- 这是一种不好的方法。几乎所有数据库都支持某种类型的自动递增列(使用语法元素,例如auto_increment、serial或identity)。这是为表中的列分配唯一递增 id 的正确方法。
- 3 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消