提示是这样子的
“/shtufz”应用程序中的服务器错误。
--------------------------------------------------------------------------------
操作必须使用一个可更新的查询。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。
源错误:
行 30:
行 31: dbConnection.Open();
行 32: int aff=dbCommand.ExecuteNonQuery();
行 33: dbConnection.Close();
行 34: return aff;
我把数据库放在D盘的目录下面,就出现了以上问题,但放到C盘,执行却一切正常,而且有时放在D盘是好的,有时又不好了,想请教一下,这倒底是怎么回事,我现在也搞不懂了,谢谢大家了
数据库目录不是只读目录吧?
对目录赋予相应权限,在该目录上点击右键,选择“共享及安全”选单,选择“安全”选项卡,为安全起见,不要对everyone用户赋予全权限
两种情况:2000和XP用户,请添加用户组"asp.net",并将该用户组赋予全权限!
2003用户,请添加用户组"network service"赋予全权限。
估计你用的是ACCESS数据库,如是,请选择数据库文件右键---属性----权限
设置为完全控制
你的ACCESS的数据库的属性EVERYONE没有设为完全控制
看看这个文章,是关于ACCESS在.NET下的被访问权限问题..
http://blog.joycode.com/percyboy/articles/36659.aspx
(b) 如果 db1.mdb 是 Access XP 创建的数据库,出现如下错误:
“/test”应用程序中的服务器错误。
----------------------------------------------
操作必须使用一个可更新的查询。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。
(c) 原因初步分析:因为包含有“UPDATE”“INSERT”“UPDATE”等命令,需要对数据库文件本身进行写入操作,所以上述权限不能满足此需求,我们需要进一步放开权限。
我们放开一些权限,
a) D:\wwwroot\test\data\ 文件夹不变:
b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限: 允许 拒绝
完全控制 □ □
修改 □ □
读取及运行 √ □
列出文件夹目录 √ □
读取 √ □
写入 √ □
1.3 放开权限后继续实验,
(a) 如果 db1.mdb 是 Access 2000 创建的数据库,出现如下错误:
“/test”应用程序中的服务器错误。
------------------------------------------
不能锁定文件。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: 不能锁定文件。
(b) 如果 db1.mdb 是 Access XP 创建的数据库,没有出现错误。
(c) 原因初步分析:我们发现在打开 Access 数据库时,同时会在所在目录生成一个同名的 *.ldb 文件,这是一个 Access 的锁定标记。鉴于此,我们猜测,用户 ASPNET 访问 Access 数据库时,也需要生成一个锁定标记,而该目录没有允许其写入,因此出错。至于 Access XP 创建的数据库为什么没有这个错误,原因还不得而知。
我们进一步放开权限,
a) D:\wwwroot\test\data\ 文件夹给用户ASPNET以如下权限: 允许 拒绝
完全控制 □ □
修改 □ □
读取及运行 √ □
列出文件夹目录 √ □
读取 √ □
写入 √ □
b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限:
√ 允许将来自父系的可继承权限传播给该对象
1.4 继续实验,发现错误已解决,那么上面这个权限就是我们需要放开的“最低权限”。
(a) 如果 db1.mdb 是 Access 2000 创建的数据库,我们会发现一个小问题:生成的 *.ldb 文件不会自己删除,访问后该文件依然存在,但这个问题不会影响 ASP.NET 的正常运行。
(b) 如果 db1.mdb 是 Access XP 创建的数据库,没有出现上面类似问题。
(c) 原因初步分析:我们仅仅是给了 ASPNET 以写入文件夹的权限,没有给它修改的权限,所以文件一旦写入,便无法修改其内容,*.ldb 也就删除不掉了。
如果非要解决这个问题,进一步放开权限为:
a) D:\wwwroot\test\data\ 文件夹给用户ASPNET以如下权限: 允许 拒绝
完全控制 □ □
修改 √ □
读取及运行 √ □
列出文件夹目录 √ □
读取 √ □
写入 √ □
b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限:
√ 允许将来自父系的可继承权限传播给该对象
上面已经说得很清楚了,权限问题。分配aspnet用户权限。另,注意一下你的分区,d盘是不是ntfs分区?它对权限要求更严格