如何从 DataTable 中的最后一行检索值?

Posted

技术标签:

【中文标题】如何从 DataTable 中的最后一行检索值?【英文标题】:How to retrieve values from the last row in a DataTable? 【发布时间】:2013-09-02 22:29:21 【问题描述】:

我在从数据表中最后插入的行中检索值时遇到问题。我有一个登录表单,这些值将插入到具有 ID(int,自动递增值)、userID(int)、logintime(smalldatetime)和 logouttime(smalldatetime)的表中。用于登录按钮内部的代码,因此插入了除注销时间之外的所有值

DateTime t1 = DateTime.Now;
objbal2.insertLoginTime(s, t1);

在注销按钮中我正在更新表格,所以我必须检索最后一行的值。我正在参考 ID 值和用户 ID 更新表。 我可以使用此查询获取值吗?但我不知道怎么做?

SELECT COLUMN FROM TABLE ORDER BY COLUMN DESC

提前致谢

【问题讨论】:

那么,在一个用户登录后,直到前一个用户退出,就没有更多的登录了? 您的问题我们不清楚...请通俗易懂 @steve。其他用户可以登录。bt 一旦用户登录我立即想要获取该行的值。这样我就可以将相同的值传递给更新查询 【参考方案1】:

如果你必须读取最后一行的值,那么

DataRow lastRow = yourTable.Rows[yourTable.Rows.Count-1];

将返回最后一行。你可以从中读取值。

我的第二个猜测是,通过 datatable 您指的是 sql server 中的表。

然后稍作修改,您的查询也可以。

SELECT TOP 1 COLUMN FROM TABLE ORDER BY COLUMN DESC

【讨论】:

然而,当我更新数据库时,我收到此错误:SqlDateTime 溢出。必须在 1753 年 1 月 1 日凌晨 12:00:00 到 9999 年 12 月 31 日晚上 11:59:59 之间。 这意味着您的日期时间对象正在获取最小值【参考方案2】:
var dt = new DataTable();
dt.AsEnumerable().Last();

dt.AsEnumerable() 返回一个IEnumerable<DataRow>

【讨论】:

【参考方案3】:

您可以从会话中获取值,然后根据您的更改更新数据库

DateTime t2 = DateTime.Now;

DataRow Row = Mylagin_dataTable.Rows.Count-1

Row[0]["LogoutTime"] = t2 ;

如果您的 ID 在会话中,则在下面使用

DateTime t2 = DateTime.Now;

DataRow Row = Mylagin_dataTable.Select("LoginID='"+ HttpContext.Current.Session["loginID"] + "'");

Row[0]["LogoutTime"] = t2 ;

【讨论】:

然而,当我更新数据库时,我收到此错误:SqlDateTime 溢出。必须在 1753 年 1 月 1 日凌晨 12:00:00 到 9999 年 12 月 31 日晚上 11:59:59 之间。 你在 sqlserver 中的数据类型是什么? datetime 、 datetime 2 或 smalldatetime。您需要分配为相应的值 让我们检查***.com/questions/11829070/…你会得到答案:) 您是否将 DateTime.Now 转换为小日期时间 Cindrella ??【参考方案4】:

对应用程序退出事件执行以下查询,这将完成您的工作

string _query = string.Format("update top 1 SessionTable set LogOutTime = 0 where UserID = 1 order by ID desc", DateTime.Now, UserID);

【讨论】:

以上是关于如何从 DataTable 中的最后一行检索值?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取DataTable某一列的某个值在那一行

避免对表格 DataTable 插件中的最后一行进行排序

如何从 DataGridView 中的一行获取 DataRow

如何从SQL Server中的重复行中获取最后一行?

跳过第一个单元格和最后一个单元格 - 使用 Open XML 从 Excel 到 C# 中的 DataTable

如何从表中检索我的最后一个插入行?