1、asp + Access 常见的数据库访问失败问题 Microsoft JET Database Engine 错误 '80004005' 解决办法
打开 FileMonitor 这个监控软件,因为默认情况下它跟踪的信息太多,造成查错如同大海捞针。
这里有个技巧就是先打开监视,然后选择你不需要监控的那些进程,或者一个目录。
点菜单里的: Edit -> Exclude Process 或 Edit -> Exclude Path 排除掉不需要监控的内容。
然后就会发现产生的信息大大减少了。
清空输出,重新开始监控,刷一下网页,再停止监控。很快看到一个信息:
115 15:59:40 DLLHOST.EXE:2804 CREATE C:\WINNT\TEMP\JET5EA6.tmp ACCESS DENIED CR\IUSR_CR
可见是因为 C:\winnt\temp 目录没有对 CR\IUSER_CR 账户开放权限,导致没法创建临时文件(奇怪的是 CR\USER_CR 这个账号访问 Access 的时候需要生成临时文件)。
找到这个目录,设置一下权限。然后刷新网页就会发现好了。
当然具体情况下目录名可能不一定就是这个,但是查错方法就是这样的了,一般都可以解决。
最近这个项目中用到是ACCESS的数据库,开始没有使用密码进行连接:
connectionString += @" c:\data\db\db.mdb " ;
OleDbConnection con = new OleDbConnection(connectionString);
con.Open();
是没有任何问题。
为了要使数据库安全一点,不能被用户直接打开编辑,所以想到给Access数据库设置个密码:从菜单“工具”->"安全"->"设置数据库密码",这样设置后就不能正常访问这个数据库了,在连接字符串中加上User ID与Password字段还是不行。最后在"工具"->"安全"->"用户与组的账户"设置好密码,直接不用更改连接字符串就可以连接了。这样处理后,用户打开时提示需要输入密码,也就达到了保护Access库的目的。
转:http://rchen.cnblogs.com/archive/2005/09/19/239785.html
3、 NTFS权限问题
磁盘分区为NTFS时,只能从access数据库中读取数据,添加修改和删除都出现错误。需要设置access数据库的访问权限,在文件夹的属性中的安全性里添加asp.net帐户,并为其添加写入修改权限。改过之后OK了
4、Access数据库在asp.net程序中相对路径的解决方法
好多朋友被ACCESS数据库在.net程序中相对路径的问题困扰,搞得每次移动程序都要去修改web.config
中数据库连接字符串的数据库路径。好多人的web.config中的写法如下:
<appSettings>
<add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\web\App_Data\Data.mdb)"></add>
</appSettings>
程序中这样写:
这样程序运行时经常提示诸如以下的错误:
'C:\WINDOWS\system32\~\App_Data\Data.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 Data Source=~\App_Data\Data.mdb
就算用绝对路径正确,那么移植程序时还要去修改web.config,所以比较麻烦。
也有在web.config中使用象ASP那样的Server.MapPath取数据库路径的,但web.config不认识Server.MapPath,此方法也行不通。
后来通过摸索、参考其它程序,总结出如下方法,可以方便的移植程序路径而不必再去修改ACCESS数据库路径。
我在web.config中的写法如下:
<add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;data source="/>
<add key="dbPath" value="~/App_Data/mydata.mdb"/>
</appSettings>
这是VS2005中的写法
我把CONN_STRING_NON_DTC定义成static readonly是为了使用方便。
好了,这样就可以随便移植你的程序而不用关心数据库的路径了,一劳永逸啊^_^,适合我这样的懒人!