實現一個用戶取過的數據不被其他用戶取到:
問題:
在用ADO訪問數據庫時,從一個表中取一定的記錄(比如20行),取出後在程序中使用,使用完後刪除掉記錄(不用更新或刪除記錄)。在多用戶操作下(每個用戶采用相同的操作),如何保證一個用戶已選取的記錄不被其他用戶選取?
解決方法:
處理此類問題的一般方法是增加一個標志列,每個用戶取的記錄設置一個標志,新的用戶只從標志爲未取的記錄中獲取記錄。
在本文中將會利用事務與鎖來控制數據的處理,不需要增加任何標志列。
解決的具體示例:
1.建立測試環境
USE tempdb
GO
CREATE TABLE dbo.tb(
id int identity(1, 1),
name nvarchar(128))
INSERT tb(name)
SELECT TOP 100
name
FROM syscolumns
GO
2.模擬第1個用戶
-- 查詢窗口發出下面的查詢語句
BEGIN TRAN
-- 事務不提交或者回滾, 以保持鎖不釋放
SET ROWCOUNT 20
SELECT *
FROM tb WITH(UPDLOCK, READPAST)
-- UPDLOCK 讓鎖保留到事務結束, READPAST 跳過已經鎖定的數據
3. 模擬第2個用戶(語句與第1個用戶一樣,只是在另一個連接中執行)
-- 查詢窗口發出下面的查詢語句
BEGIN TRAN
-- 事務不提交或者回滾, 以保持鎖不釋放
SET ROWCOUNT 20
SELECT *
FROM tb WITH(UPDLOCK, READPAST)
-- UPDLOCK 讓鎖保留到事務結束, READPAST 跳過已經鎖定的數據
4.結果
大家可以看到:查詢窗口1列出了前20條數據,查詢窗口1列出了21-40條數據。
此時就實現了不同的用戶取不同數據的需求.
注釋::在 處理完成後, 刪除記錄, 然後提交事務就可以了。
使用事務與鎖,實現一個用戶取過的數據不被其他用戶取到問題描述:用ADO訪問數據庫,從一個表中取一定的記錄(比如20行),取出後在程序中使用,使用完後刪除掉記錄(不用更新或刪除記錄)。在多用戶操作下(每個用戶采用相同的操作),怎麽保證一個用戶已選取的記錄不被其他...查看完整版>>
使用事務與鎖,實現一個用戶取過的數據不被其他用戶取到
實現datagrid的foot中增加一個新增數據行,以解決datagrid不能新增數據的問題以前我從來都沒用過datagrid,因爲覺得這個東東效率比較低,今天要做個比較簡單的東西(字段很少),但需要添加修改刪除,所以就想試一下datagrid,修改、刪除都做完後就剩下添加了,在csdn上查了一下,有不少相關的帖子,但...查看完整版>>
實現datagrid的foot中增加一個新增數據行,以解決datagrid不能新增數據的問題
使用MD5編碼實現數據庫用戶密碼字段的加密 1 前言 衆所周知,MD5是目前應用最多的密碼保護方法,該編碼傳說爲不可逆加密編碼<也就是說,永運無法倒算原碼>。 ...查看完整版>>
使用MD5編碼實現數據庫用戶密碼字段的加密
使用MD5編碼實現數據庫用戶密碼字段的加密 1 前言 衆所周知,MD5是目前應用最多的密碼保護方法,該編碼傳說爲不可逆加密編碼<也就是說,永運無法倒算原碼>。使用MD5加密用戶的操作密碼,可以有效防止系統維護人員直接進入數據庫時出現系統安全漏洞<...查看完整版>>
使用MD5編碼實現數據庫用戶密碼字段的加密
實現session登陸時間的驗證,驗證用戶登錄頁面的一個監聽器1.在login_do.jsp登錄成功的前面加上session.setAttribute("user",admin); 我是在我的驗證Action裏面加上的:Admin admin=dbu.selectAdmin(login.getAdmin_user()); HttpSession session=request.getSession();admin...查看完整版>>
實現session登陸時間的驗證,驗證用戶登錄頁面的一個監聽器
一個簡單的用戶登錄接口asp實現一個簡單的用戶登錄接口asp實現 一個簡單的用戶登錄接口asp實現 <%@LANGUAGE='VBSCRIPT' CODEPAGE='936'%><!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR...查看完整版>>
一個簡單的用戶登錄接口asp實現
一個簡單的用戶登錄接口asp實現<" CODEPAGE="936"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""><html xmlns=""><head><script language="javascript" type="text/javascript"><!-- ...查看完整版>>
一個簡單的用戶登錄接口asp實現
一個簡單的用戶登錄接口asp實現<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.d...查看完整版>>
一個簡單的用戶登錄接口asp實現
用一個存儲過程實現分步刪除數據表記錄簡介在實際的工作和學習中,我們需要分步刪除數據表的一些記錄,分批提交用以減少對Undo的使用,在本中我們將介紹一個簡單的存儲過程用于實現此邏輯。 大家可以根據各自的需要進行適當調整。 參考示例如下: SQL> ...查看完整版>>
用一個存儲過程實現分步刪除數據表記錄