天天看點

C#通路ACCESS資料庫被其他程式獨占方式打開無法通路

Asp.net項目用Sqlserver資料庫正常,移植到Access就出現問題。其中:“Microsoft Jet 資料庫引擎打不開檔案'C:\***\*.mdb'。它已經被别的使用者以獨占方式打開,或沒有檢視資料的權限...”這個錯誤我搞了半天才搞定。

首先,我是NTFS檔案系統(聽說這個格式對權限安全性要高些),其次是XP系統,是以右鍵單擊檔案夾屬性沒有安全選項,需要先打開檔案系統 -- 工具-->檔案夾選項-->檢視-->去掉“使用簡單檔案共享(推薦)”前的勾。右鍵打開存放資料庫檔案夾,屬性-->安全  裡添加使用者Everyone,賦權限“完全控制”(資料庫放C槽,還是失敗,移到D盤-->成功)。然後我的項目可以讀取到資料庫的資訊了。當對其修改時,問題又來了,無法修改。原來資料庫本身沒有賦予通路使用者修改的權限,于是同樣右鍵資料庫,安全裡添加Everyone,賦予完全控制權限,OK,我的程式終于跑起來了。

Access資料庫不同于Sqlserver,用慣了Sqlserver後還真不習慣它。Access中delete語句必須加from,在Sqlserver是可以不要的,還有就是遇到錯誤資訊:文法錯誤 (操作符丢失) 在查詢表達式 '*****'中,就可能是字段名沖突,最好的解決辦法就是所有字段名加上'[]'。Access沒有存儲過程,所擁有的“查詢”一次也隻能執行一條sql語句,這個不太友善...

Access的select top語句有時會失效,這主要是因為查詢裡包含了order by語句,如:

select top 3 from users order by createtime desc

當createtime含有相同值時,Access的select top就會失效。解決辦法就是将主鍵id也包含在order by裡面,因為主鍵不會有重複值,既修改為:

select top 3 from users order by createtime,id desc

................................