2013-08-30 11 views
6

Mam problemy z pobieraniem wartości z ostatniego wstawionego wiersza w tabeli danych. Mam formularz logowania i wartości zostaną wstawione do tabeli ma ID (int, auto zwiększana wartość), userID (int), logintime (smalldatetime) i logouttime (smalldatetime). Kod, który jest używany do wewnątrz przycisku logowania, to w ten sposób wstawia wszystkie wartości z wyjątkiem czasu wylogowaniaJak pobrać wartości z ostatniego wiersza w DataTable?

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

aw dzienniku przycisku OUT ja aktualizowania tabeli, więc muszę odzyskać ostatnie wartości rzędu. Aktualizuję tabelę w odniesieniu do wartości ID i ID użytkownika. Czy mogę użyć tego zapytania, aby uzyskać wartości? Ale nie mogę zrozumieć, jak?

SELECT COLUMN FROM TABLE ORDER BY COLUMN DESC 

góry dzięki

+0

tak, po login jednego użytkownika nie ma więcej loginów aż do wylogowania poprzedniego użytkownika? – Steve

+0

Twój problem nie jest dla nas jasny ... Uprzejmie ułatwi zrozumienie – Patel

+0

@steve. inni użytkownicy mogą zalogować się do pliku .bt po zalogowaniu się użytkownika i natychmiast chcę uzyskać tę wartość wiersza.to, że mogę przekazać te same wartości do zapytania aktualizacji – Cindrella

Odpowiedz

20

jeśli trzeba odczytać wartości z ostatniego rzędu następnie

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

zwróci Ci ostatni wiersz. i możesz odczytać z niego wartości.

Moje drugie przypuszczenie jest takie, że przez datatable odnosisz się do tabeli na serwerze sql.

Następnie z niewielkimi modyfikacjami zapytanie również jest w porządku.

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

, które zadziałało. dziękuję :) – Cindrella

+0

serdecznie zapraszamy Cindrella – Ehsan

+0

A jednak, po aktualizacji bazy danych otrzymuję ten błąd: SqlDateTime przepełnienie. Musi być między 1/1/1753 12:00:00 AM a 12/31/9999 11:59:59 PM. – Cindrella

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

dt.AsEnumerable() zwraca IEnumerable<DataRow>

0

wykonać następujące zapytanie w przypadku wyjścia Aplikacja będzie to zrobić swoją pracę

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

1

Można dostał wartość z sesji, a następnie zaktualizuj bazę danych zgodnie ze zmianą

DateTime t2 = DateTime.Now; 

DataRow Row = Mylagin_dataTable.Rows.Count-1 

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

jeśli identyfikator sesjinastępnie skorzystać z poniższego

DateTime t2 = DateTime.Now; 

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

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

A jednak po aktualizacji bazy danych pojawia się ten błąd: Przepełnienie SqlDateTime. Musi być między 1/1/1753 12:00:00 AM a 12/31/9999 11:59:59 PM. – Cindrella

+0

jaki jest twój typ danych w sqlserver? datetime, datetime 2 lub smalldatetime. musisz przypisać odpowiednią wartość – MSTdev

+0

małe datetime. – Cindrella

Powiązane problemy