日期:2014-05-19  浏览次数:20500 次

必须使用可更新的查询?????


在调试的时候这个函数出现了错误,本来是SQL数据库的,没有错误,改成ACCEESS数据库后出现了“必须使用可更新的查询”的异常错误

  OleDbConnection   myconn   =   conn();
                myconn.Open();
               
                OleDbCommand   Click   =   new   OleDbCommand( "UPDATE   News   SET   Hits   =   (SELECT   Hits+1   FROM   News   WHERE   NewsID   = "+id.ToString()+ "   )   WHERE   NewsID   =   "+id.ToString(),   myconn);
                Click.ExecuteNonQuery();
                OleDbCommand   GetOne   =   new   OleDbCommand( "SELECT   *   FROM   News   WHERE   NewsID   = "+id.ToString(),   myconn);
                OleDbDataReader   OneNews   =   GetOne.ExecuteReader(CommandBehavior.CloseConnection);

                return   OneNews;

错误提示是《Click.ExecuteNonQuery();》中,感觉应该是我写的更新语句不能适合ACCESS数据库,那么要怎样改呢?


------解决方案--------------------
改为OleDbCommand Click = new OleDbCommand( "UPDATE News SET Hits = Hits + 1 WHERE NewsID = "+id.ToString(), myconn);

------解决方案--------------------
不具备mdb文件所在的目录的写权限。
------解决方案--------------------
你的ACCEESS数据库肯定是存放在NTFS分区,找到存放ACCEESS数据库的文件夹,给予Everyone写入权限(其实只要给Internet来宾帐户写入权限就够了)。
------解决方案--------------------
MDB文件的更改权限没有
------解决方案--------------------
原因1:看看你的数据库文件有没有写权限

原因2:你导成access表的时候是不是主键值丢了(从sql server 往 access 表里导的时候不小心就会丢失主键)?如果丢了的话,打表数据表重新设置一下。
------解决方案--------------------
为表建立主键,并使用主键做为更新的条件.
------解决方案--------------------
将你的ACCEESS数据库的文件夹 属性-> 安全 -> Everyone 允许写入