• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Theo dõi user truy nhập vào CSDL SQL server 2000

Chuyên mục thảo luận các vấn đề liên quan đến ứng dụng quản lý và cơ sở dữ liệu

Moderator: Điều hành

hieppv
Posts: 9
Joined: Mon 20/10/2008 3:11 pm

Theo dõi user truy nhập vào CSDL SQL server 2000

Postby hieppv » Tue 16/03/2010 9:04 pm

Mình xây dựng chương trình bằng VB 2008, CSDL SQL server 2000 sử dụng trong mạng Lan.
1. Mình muốn theo dõi người sử dụng đang kết nối vào CSDL hay offline
2. Cách khoá bản ghi



ShareToShare
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 168
Joined: Thu 27/11/2008 4:04 pm
Has thanked: 1 time

Re: Theo dõi user truy nhập vào CSDL SQL server 2000

Postby ShareToShare » Wed 17/03/2010 6:04 pm

1. Mình muốn theo dõi người sử dụng đang kết nối vào CSDL hay offline

cái này mình cũng từng làm và nó còn có hạn chế,chút nữa nói hạn chế bên dưới và cùng thảo luận tiếp
Hướng giải quyết :
Khi người dùng đăng nhập tại form Login => { login thành công hoặc thất bại }
+thành công : // viết phương thức cập nhật lại trong csdl tại table users chẳng hạn . Tôi vd : table users(username,pass,status,....)
status là tình trạng online hay ofline và nó là kiểu bit. khì này sữa lại là status=true với điều kiện là username đã Login thành công.
Vì vậy khi người dùng thoát khỏi chương trình thì nhớ cập lại status=false với điều kiện là username hồi nãy.
+ Còn login thất bại thì không có gì để nói.
=> muốn biết ai online hay ofline chỉ còn là viêc truy vấn cái table users kia.
Dĩ nhiên nó có hạn chế như trên đã nói là trong trường hợp máy tự động shutdow mà chưa kịp thoát khỏi chương trình ứng dụng của bạn => status vẫn là true mặc dù bạn chưa login vào ứng dụng của bạn.
Và cái tôi cũng đang muốn khắc phục là khi nào máy tự shutdow với mọi lý do thì mình phải cho tắt ứng dụng của mình trước
sau đó mới shutdow máy.
Cái này có ai biết thì chỉ mình với.

User avatar
lanlan
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 310
Joined: Thu 05/06/2008 8:49 am
Been thanked: 1 time

Re: Theo dõi user truy nhập vào CSDL SQL server 2000

Postby lanlan » Wed 17/03/2010 9:24 pm

ShareToShare wrote:
1. Mình muốn theo dõi người sử dụng đang kết nối vào CSDL hay offline

cái này mình cũng từng làm và nó còn có hạn chế,chút nữa nói hạn chế bên dưới và cùng thảo luận tiếp
Hướng giải quyết :
Khi người dùng đăng nhập tại form Login => { login thành công hoặc thất bại }
+thành công : // viết phương thức cập nhật lại trong csdl tại table users chẳng hạn . Tôi vd : table users(username,pass,status,....)
status là tình trạng online hay ofline và nó là kiểu bit. khì này sữa lại là status=true với điều kiện là username đã Login thành công.
Vì vậy khi người dùng thoát khỏi chương trình thì nhớ cập lại status=false với điều kiện là username hồi nãy.
+ Còn login thất bại thì không có gì để nói.
=> muốn biết ai online hay ofline chỉ còn là viêc truy vấn cái table users kia.
Dĩ nhiên nó có hạn chế như trên đã nói là trong trường hợp máy tự động shutdow mà chưa kịp thoát khỏi chương trình ứng dụng của bạn => status vẫn là true mặc dù bạn chưa login vào ứng dụng của bạn.
Và cái tôi cũng đang muốn khắc phục là khi nào máy tự shutdow với mọi lý do thì mình phải cho tắt ứng dụng của mình trước
sau đó mới shutdow máy.
Cái này có ai biết thì chỉ mình với.

Thực ra cách anh share to share em cũng đã làm từ lâu nhưng do có những mặt hạn chế và sau đó em đã cải tiến bằng việc thay cái status bằng ip sau đó khi load lại table user em cho ping lại nếu ping thấy thì online còn ping không thấy thì offline hiệu quả tuyệt vời hihihi thuật toán này được giải quyết hihihi :">
"•´¨*•.¸¸.*..^_^ one love-one heart ^_^..*.¸¸.•*¨."
_______"•´`•.(¸.•´(¸.•* *•.¸)`•.¸).•´`•"
________________*(¨`•.•´¨)*
__________________`•.¸.•’

User avatar
haitu
Guru
Guru
Posts: 206
Joined: Sat 10/09/2005 2:50 pm
Has thanked: 1 time
Been thanked: 19 times
Contact:

Re: Theo dõi user truy nhập vào CSDL SQL server 2000

Postby haitu » Wed 17/03/2010 11:38 pm

ShareToShare wrote:Dĩ nhiên nó có hạn chế như trên đã nói là trong trường hợp máy tự động shutdow mà chưa kịp thoát khỏi chương trình ứng dụng của bạn => status vẫn là true mặc dù bạn chưa login vào ứng dụng của bạn.
Và cái tôi cũng đang muốn khắc phục là khi nào máy tự shutdow với mọi lý do thì mình phải cho tắt ứng dụng của mình trước
sau đó mới shutdow máy.
Cái này có ai biết thì chỉ mình với.

Bạn chỉ cần bắt sự kiện FormClosing và với nguyên nhân đóng form (e.CloseReason) thì bạn có thể làm được
Tuy nhiên cách này kg tối ưu vì nếu đang chạy máy bị cúp điện chẳng hạn. Còn cách của lanlan đơn giản mà lại hay :-bd
Còn mình thì làm theo cách khác, mỗi ứng dụng của mình đều có 2 file , 1 file server, 1 file client, file client chính là cái project hiện tại của bạn, còn file server thì quản lý kết nối của client vào CSDL
VD: khi user đăng nhập (bằng form login) thông tin username, password sẽ được đưa lên file server, khi đó file server sẽ tiến hành đăng nhập thử vào csdl với user, pass mà máy yêu cầu đăng nhập gởi lên, nếu đăng nhập thành công thì file server sẽ gởi thông tin lại cho máy client biết và coi như client đã đăng nhập đồng thời file server sẽ lưu lại dữ liệu : Máy đăng nhập, user đã đăng nhập vào 1 datatable, còn khi client đóng ứng dụng thì cũng sẽ gởi thông tin lên cho server biết để unregister user ra khỏi danh sách đăng nhập. Giả sử trường hợp cúp điện
Trường hợp 1: Máy server kg có UPS -> bị tắt nguồn thì các thông tin user đang đăng nhập sẽ bị xóa vì dữ liệu hiện đang lưu trên datatable (không ảnh hưởng tới CSDL), đồng thời các máy client đang truy xuất vào cũng sẽ không làm việc được -> dữ liệu được đảm bảo
Trường hợp 2: Máy client bị ngắt nguồn, cái này gặp thường hơn >:) (nếu đóng ứng dụng thì như trường hợp ban đầu->gởi thông tin hủy user đăng nhập cho server biết để delete), nếu client bị ngắt nguồn đột ngột thì đương nhiên kết nối giữa client - server sẽ mất-> file server sẽ delete user bị mất kết nối.
Trường hợp 3: Cả 2 máy đều bị ngắt điện, khỏi bàn cãi :D
Ngoài ra với mô hình này bạn có thể làm nhiều thứ hơn nữa chứ kg chỉ có mỗi việc quản lý user kết nối đâu :)

Bạn có thể tham khảo các tài liệu lập trình socket , mô hình client - server để có thể giải quyết vấn đề này.

ShareToShare
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 168
Joined: Thu 27/11/2008 4:04 pm
Has thanked: 1 time

Re: Theo dõi user truy nhập vào CSDL SQL server 2000

Postby ShareToShare » Fri 19/03/2010 8:40 am

em cho ping lại nếu ping thấy thì online còn ping không thấy thì offline

là sao thế hả lanlan ? a chưa hiểu lắm.
@haitu: đã thữ như sau với e.CloseReason trong event FormClosing
  1.  if (e.CloseReason == CloseReason.TaskManagerClosing)
  2.             {
  3.                 MessageBox.Show("Closed by Task Manager");
  4.             }

Nhưng khi bấm Ctrl+Alt+Del : rồi tắt ứng dụng trên đây => hiện lên thông báo của win => Click nút "End Now" =>tắt ứng dụng cái kịch ko thông qua câu lệnh if ở trên.
Bạn có thể tham khảo các tài liệu lập trình socket , mô hình client - server để có thể giải quyết vấn đề này.

cám ơn vì gợi ý này nhưng trước mắt cứ đơn giản hóa nó cái đã.
thanks all

User avatar
haitu
Guru
Guru
Posts: 206
Joined: Sat 10/09/2005 2:50 pm
Has thanked: 1 time
Been thanked: 19 times
Contact:

Re: Theo dõi user truy nhập vào CSDL SQL server 2000

Postby haitu » Fri 19/03/2010 8:08 pm

ShareToShare wrote:Nhưng khi bấm Ctrl+Alt+Del : rồi tắt ứng dụng trên đây => hiện lên thông báo của win => Click nút "End Now" =>tắt ứng dụng cái kịch ko thông qua câu lệnh if ở trên.

Mình thử trên Windows XP thì vẫn hiện thông báo bình thường, còn trên Windows 7 thì nó có chạy vào đoạn code đó nhưng lại không bắt được sự kiện này


Return to “Ứng dụng Quản lý và Cơ sở dữ liệu”

Who is online

Users browsing this forum: No registered users and 2 guests