2013-08-30 17 views
6

Sto riscontrando problemi nel recupero dei valori dall'ultima riga inserita in una tabella dati. Ho un modulo di login e i valori saranno inseriti nella tabella ha l'ID (int, un valore incrementale automatico), userID (int), logintime (smalldatetime) e logouttime (smalldatetime). Il codice che viene utilizzato per all'interno del pulsante di accesso, si inserisce in tal modo tutti i valori tranne il log outCome recuperare i valori dall'ultima riga in un DataTable?

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

e nel registro fuori tasto sto aggiornando la tabella, quindi devo recuperare gli ultimi valori di riga. Sto aggiornando la tabella con riferimento al valore ID e userID. Posso usare questa query per ottenere i valori? Ma non riesco a capire come?

SELECT COLUMN FROM TABLE ORDER BY COLUMN DESC 

Grazie in anticipo

+0

Così, dopo il login di un utente non ci sono più dati di accesso fino a quando il precedente disconnessione utente? – Steve

+0

Il tuo problema non è chiaro per noi ... Gentilmente, rendi facile capire – Patel

+0

@steve. gli altri utenti possono accedere in.bt una volta che un utente effettua il login, desidero immediatamente ottenere quel valore della riga. Così posso passare gli stessi valori alla query di aggiornamento – Cindrella

risposta

20

se si deve leggere i valori da ultima fila poi

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

lo restituisca ultima fila. e puoi leggere i valori da esso.

La mia seconda ipotesi è che per datatable si fa riferimento alla tabella in SQL Server.

Quindi con piccole modifiche anche la query va bene.

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

che ha funzionato. grazie :) – Cindrella

+0

sei il benvenuto Cindrella – Ehsan

+0

Eppure, quando aggiorno il database ricevo questo errore: overflow SqlDateTime. Deve essere compreso tra 1/1/1753 12:00:00 e 31/12/9999 11:59:59 PM. – Cindrella

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

dt.AsEnumerable() restituisce un IEnumerable<DataRow>

0

Eseguire seguente query su eventi dell'applicazione Exit, questo farà il vostro lavoro

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

1

Puoi ottenuto il valore della sessione e poi aggiorna il tuo database secondo le tue modifiche

DateTime t2 = DateTime.Now; 

DataRow Row = Mylagin_dataTable.Rows.Count-1 

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

se l'ID in sessione quindi utilizzare sotto

DateTime t2 = DateTime.Now; 

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

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

Eppure, quando aggiorno il database ricevo questo errore: Overflow SqlDateTime. Deve essere compreso tra 1/1/1753 12:00:00 e 31/12/9999 11:59:59 PM. – Cindrella

+0

qual è il tuo tipo di dati in sqlserver? datetime, datetime 2 o smalldatetime. è necessario assegnare come rispettivo valore – MSTdev

+0

datetime piccolo. – Cindrella

Problemi correlati