一共有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(); }

解决方案 »

  1.   

    这问题不知道问过几千次了...NTFS权限问题...操作进程用户必须对Access文件所在文件夹用可更改的权限...
      

  2.   

    这种情况一般会在你用IIS打开时会发生,当你用.net环境打开时没什么问题,这是因为你在用IIS建立虚拟目录时,IIS为了安全对你的数据库加了只读的权限,所以你无法对数据库操作,这种情况你可以设置一下权限,在IIS中选择你的站点右键——权限向导,然后均按默认设置即可
      

  3.   

    不是用IIS呀,我在VS2008上运行的,而且2条SQL语句,其中第一条执行了,第二条就失败了。
      

  4.   

    我的做法不安全但有效!呵呵!我是把文件的权限添加everyone,然后给予可写入权限!
      

  5.   

    不是权限问题是你的JET-SQL有问题.ACCESS根本就不支持这种更新语句,看你的更新逻辑似乎应该是这样子滴.UPDATE catego SET catego.pid = ID  WHERE (((catego.ID)=(SELECT MAX(ID) FROM Catego)));