2013-08-30 49 views
6

Tôi gặp sự cố khi truy lục giá trị từ hàng được chèn cuối cùng trong bảng Dữ liệu. Tôi có một mẫu đăng nhập và các giá trị sẽ được chèn vào trong bảng có ID (int, giá trị tăng tự động), userID (int), logintime (smalldatetime) và logouttime (smalldatetime). Các mã được sử dụng để bên trong nút đăng nhập, nó như vậy chèn tất cả các giá trị ngoại trừ các bản ghi ra thời gianCách truy xuất các giá trị từ hàng cuối cùng trong một DataTable?

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

và trong nhật ký ra nút Tôi cập nhật bảng, do đó tôi phải lấy giá trị hàng cuối cùng. Tôi đang cập nhật bảng có tham chiếu đến giá trị ID và userID. Tôi có thể sử dụng truy vấn này nhận các giá trị không? Nhưng tôi không thể hiểu được làm thế nào?

SELECT COLUMN FROM TABLE ORDER BY COLUMN DESC 

Cảm ơn trước

+0

Vì vậy, sau khi đăng nhập của một người dùng không có nhiều thông tin đăng nhập cho đến khi logout người sử dụng trước đó? – Steve

+0

Vấn đề của bạn không rõ ràng đối với chúng tôi ... Vui lòng làm cho nó dễ hiểu – Patel

+0

@steve. những người dùng khác có thể đăng nhập. Khi một người dùng đăng nhập, tôi ngay lập tức muốn nhận được giá trị đó của hàng.so rằng tôi có thể chuyển các giá trị giống nhau cho truy vấn cập nhật – Cindrella

Trả lời

20

nếu bạn phải đọc các giá trị từ hàng cuối cùng sau đó

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

sẽ đưa bạn trở hàng cuối cùng. và bạn có thể đọc các giá trị từ nó.

Dự đoán thứ hai của tôi là theo dữ liệu bạn đang tham chiếu đến bảng trong máy chủ sql.

Sau đó, với sửa đổi nhỏ, truy vấn của bạn cũng tốt.

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

hoạt động. cảm ơn bạn :) – Cindrella

+0

bạn được chào đón Cindrella – Ehsan

+0

Chưa hết, khi tôi cập nhật cơ sở dữ liệu tôi nhận được lỗi này: tràn SqlDateTime. Phải từ 1/1/1753 12:00:00 AM và 12/31/9999 11:59:59 PM. – Cindrella

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

dt.AsEnumerable() trả về một IEnumerable<DataRow>

0

Execute sau truy vấn về sự kiện Application Exit, điều này sẽ làm công việc của bạn

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

1

Bạn có thể có giá trị từ phiên của bạn và sau đó cập nhật cơ sở dữ liệu theo thay đổi của bạn

DateTime t2 = DateTime.Now; 

DataRow Row = Mylagin_dataTable.Rows.Count-1 

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

nếu ID của bạn trong phiên sau đó sử dụng dưới đây

DateTime t2 = DateTime.Now; 

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

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

Và khi nào tôi cập nhật cơ sở dữ liệu tôi nhận được lỗi này: tràn SqlDateTime. Phải từ 1/1/1753 12:00:00 AM và 12/31/9999 11:59:59 PM. – Cindrella

+0

datatype của bạn trong sqlserver là gì? datetime, datetime 2 hoặc smalldatetime. bạn cần gán giá trị tương ứng – MSTdev

+0

ngày giờ nhỏ. – Cindrella

Các vấn đề liên quan