2013-08-30 53 views
6

我在從數據表中最後插入的行中檢索值時遇到問題。我有一個登錄表單,值將被插入表中,其中包括ID(int,一個自動遞增的值),userID(int),logintime(smalldatetime)和logouttime(smalldatetime)。這是用來登錄按鈕裏面的代碼,因此,它插入所有值除註銷時間如何檢索DataTable中最後一行的值?

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

,並在註銷按鈕我更新的表,所以我必須找回最後一行值。我正在參考ID值和用戶ID更新表格。 我可以使用此查詢獲取值嗎?但我無法弄清楚如何?

SELECT COLUMN FROM TABLE ORDER BY COLUMN DESC 

在此先感謝

如果你有閱讀了上次行的值,然後

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

將返回最後一行

+0

所以,一個用戶登錄後,沒有更多的登錄,直到前一個用戶註銷? – Steve

+0

您的問題不清楚...請讓我們很容易理解 – Patel

+0

@steve。其他用戶可以登錄.bt,一旦用戶登錄,我立即想要獲取該行的值。因此,我可以將相同的值傳遞到更新查詢 – Cindrella

回答

20

。並且您可以從中讀取值。

我的第二個猜測是,通過數據表您指的是sql server中的表。

然後用小修改您的查詢也很好。

SELECT TOP 1 COLUMN FROM TABLE ORDER BY COLUMN DESC 
+1

工作。謝謝:) – Cindrella

+0

歡迎您Cindrella – Ehsan

+0

然而,當我更新數據庫時,我收到此錯誤: SqlDateTime溢出。必須介於1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之間。 – Cindrella

6
var dt = new DataTable(); 
dt.AsEnumerable().Last(); 

dt.AsEnumerable()返回IEnumerable<DataRow>

0

執行下列應用程序退出事件查詢,這會做你的工作

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

1

你可以得到從您的會話的值,然後根據您的更改更新您的數據庫

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 ; 
+0

然而,當我更新數據庫時,我收到此錯誤: SqlDateTime溢出。必須介於1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之間。 – Cindrella

+0

你在sqlserver中的數據類型是什麼? datetime,datetime 2或smalldatetime。你需要分配作爲相應的值 – MSTdev

+0

小日期時間。 – Cindrella

相關問題