[ADO.NET] 怎样使用Jet 4.0打开MDB数据库并生成DataSet?
我先建立一个OLEDBConnection MyConn,ConnectionString="Data Source=""C:\Inetpub\wwwroot\soft\database\database.mdb"";Password=;Provider=""Microsoft.Jet.OLEDB.4.0"";Mode=Share Deny None"
,然后建立一个OleDbDataAdapter MyAdapter,Connection属性设置为MyConn,设定好SQL命令
Page_Load的时候,
Dim MyDataSet as New DataSet
MyAdapter.Fill(MyDataSet)
出错
提示 The Microsoft Jet database engine cannot open the file 'C:\Inetpub\wwwroot\soft\database\database.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
可是在ASP中就可以用同样的Connection打开这个数据库,而且这个时候数据库确实没有被打开,是权限的问题,还是代码有问题?
能否给一个使用ADO.NET打开本地OLEDB的例子?
,然后建立一个OleDbDataAdapter MyAdapter,Connection属性设置为MyConn,设定好SQL命令
Page_Load的时候,
Dim MyDataSet as New DataSet
MyAdapter.Fill(MyDataSet)
出错
提示 The Microsoft Jet database engine cannot open the file 'C:\Inetpub\wwwroot\soft\database\database.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
可是在ASP中就可以用同样的Connection打开这个数据库,而且这个时候数据库确实没有被打开,是权限的问题,还是代码有问题?
能否给一个使用ADO.NET打开本地OLEDB的例子?
...全文
请发表友善的回复…
发表回复
rgbcn 2003-10-21
- 打赏
- 举报
这个错误发生在当IIS使用匿名帐号(通常是IUSR)时,该帐号在NT中对数据库所在的目录没有正确的权限。(这就是为什么在Win95和PWS下没问题,因为win95根本就没有目录权限这一说)检查文件和目录的权限。确定你能够在该目录中有能够新建和删除临时文件的权限。这些临时文件其实是数据库建立在同一个目录下的文件,但是要注意的是,有可能这些文件也可能建立在别的目录,例如 /Winnt。使用NT的文件监视程序监视文件失败时到底是访问了什么目录。这个NT的文件监视程序可以在这个地方下www.sysinternals.com。如果你对数据库使用了一个网络地址,例如映射地址,就要检查一下共享文件和目录的权限,还要检查一下数据源文件(DSN)是否被别的程序标志成为正在使用中,这些别的程序一般是Visual InterDev,关闭任何一个InterDev中的正打开和数据库连接的项目。这个错误还可能发生在这种情况:如果在DSN中使用了一个UNC路径(就是通用命名协议),请改用本地路径进行测试,因为如果对本地数据库使用UNC也可能出错。还可能发生在这种情况,如果服务器要访问Access中的一个表,而这个表却联接在一个网络服务器上。
rgbcn 2003-10-21
- 打赏
- 举报
用ASP打开远端MDB文件的方法
2002:11:12 ·来源:开发者俱乐部 liangfukai
如果你用ODBC connection (DSN or DSN-less)来访问远端的(UNC path)数据库, OLEDB会出现以下错误信息:
Microsoft OLE DB Provider for ODBC Drivers error ’80004005’
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file ’(unknown)’. It is already opened exclusively by another user, or you need permission to view its data.
你完全可以避免这种错误--ASP和ActiveX支持两种方式打开MDB文件的DSN-less连接,或由其它机器访问MDB文件。
1. DAO database (only for small load)
Dim File, Conn, RS
Const ReadOnly = False
File = "\\server\share\file.mdb"
Set Conn = CreateObject("DAO.DBEngine.35").Workspaces(0).OpenDatabase(File,,ReadOnly)
Set RS = Conn.OpenRecordset(SQL)
2. ADO + Jet OLE DB provider
Dim Conn, RS
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Conn.Open "\\server\share\file.mdb"
Set RS = Conn.Execute(SQL)
你得确定使用ASP的用户有NT的数据库及共享访问权限。
假定有权限的话,你亦可访问其它机器中的开放数据连接:
http://www.pstruh.cz/
Set UM = CreateObject("UserManager.Server")
UM.LogonUser "Login with the rights", "Password", "Domain"
...
open database
...
UM.RevertToSelf
2002:11:12 ·来源:开发者俱乐部 liangfukai
如果你用ODBC connection (DSN or DSN-less)来访问远端的(UNC path)数据库, OLEDB会出现以下错误信息:
Microsoft OLE DB Provider for ODBC Drivers error ’80004005’
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file ’(unknown)’. It is already opened exclusively by another user, or you need permission to view its data.
你完全可以避免这种错误--ASP和ActiveX支持两种方式打开MDB文件的DSN-less连接,或由其它机器访问MDB文件。
1. DAO database (only for small load)
Dim File, Conn, RS
Const ReadOnly = False
File = "\\server\share\file.mdb"
Set Conn = CreateObject("DAO.DBEngine.35").Workspaces(0).OpenDatabase(File,,ReadOnly)
Set RS = Conn.OpenRecordset(SQL)
2. ADO + Jet OLE DB provider
Dim Conn, RS
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Conn.Open "\\server\share\file.mdb"
Set RS = Conn.Execute(SQL)
你得确定使用ASP的用户有NT的数据库及共享访问权限。
假定有权限的话,你亦可访问其它机器中的开放数据连接:
http://www.pstruh.cz/
Set UM = CreateObject("UserManager.Server")
UM.LogonUser "Login with the rights", "Password", "Domain"
...
open database
...
UM.RevertToSelf
ddangerous169 2003-10-21
- 打赏
- 举报
右击mdb文件的属性,把asp_net用户也入