操作必须使用一个可更新的查询

rightmin 2009-04-20 10:15:21
一共有2个SQL语句,使用操纵Access数据库的,这两句话我用MSSQL2005执行没事呀,一到Access下就出错,错误是“操作必须使用一个可更新的查询”,怎么回事???
string com = "insert into 分类 (名称) values ('" + str + "')";
string com1 = "UPDATE 分类 SET 父类 = (select max(ID) from 分类) WHERE ID=(select max(ID) from 分类)";
OleCom.CommandText = com;
try
{
OleCon.Open();
if (OleCom.ExecuteNonQuery() > 0)
{
OleCom.CommandText = com1;
return (OleCom.ExecuteNonQuery().ToString());
}
return "-1";
}
catch(Exception ex) { return ex.Message; }
finally { Clos(); }

...全文
156 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
rightmin 2009-04-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Garnett_KG 的回复:]
不是权限问题

是你的JET-SQL有问题.

ACCESS根本就不支持这种更新语句,看你的更新逻辑似乎应该是这样子滴.


SQL code

UPDATE catego SET catego.pid = ID WHERE (((catego.ID)=(SELECT MAX(ID) FROM Catego)));
[/Quote]

还是你的最靠谱。
Garnett_KG 2009-04-21
  • 打赏
  • 举报
回复
不是权限问题

是你的JET-SQL有问题.

ACCESS根本就不支持这种更新语句,看你的更新逻辑似乎应该是这样子滴.



UPDATE catego SET catego.pid = ID WHERE (((catego.ID)=(SELECT MAX(ID) FROM Catego)));



子夜1978 2009-04-21
  • 打赏
  • 举报
回复
我的做法不安全但有效!呵呵!我是把文件的权限添加everyone,然后给予可写入权限!
rightmin 2009-04-21
  • 打赏
  • 举报
回复
我写的程序是桌面程序呀,难道每次都要设置文件夹权限吗?
rightmin 2009-04-21
  • 打赏
  • 举报
回复
不是用IIS呀,我在VS2008上运行的,而且2条SQL语句,其中第一条执行了,第二条就失败了。
蓝海D鱼 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tang_fu 的回复:]
这种情况一般会在你用IIS打开时会发生,当你用.net环境打开时没什么问题,这是因为你在用IIS建立虚拟目录时,IIS为了安全对你的数据库加了只读的权限,所以你无法对数据库操作,这种情况你可以设置一下权限,在IIS中选择你的站点右键——权限向导,然后均按默认设置即可
[/Quote]up
tang_fu 2009-04-20
  • 打赏
  • 举报
回复
这种情况一般会在你用IIS打开时会发生,当你用.net环境打开时没什么问题,这是因为你在用IIS建立虚拟目录时,IIS为了安全对你的数据库加了只读的权限,所以你无法对数据库操作,这种情况你可以设置一下权限,在IIS中选择你的站点右键——权限向导,然后均按默认设置即可
dfzx 2009-04-20
  • 打赏
  • 举报
回复
权限问题
vrhero 2009-04-20
  • 打赏
  • 举报
回复
这问题不知道问过几千次了...

NTFS权限问题...操作进程用户必须对Access文件所在文件夹用可更改的权限...

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧