读书人

必须使用可更新的查询?该怎么解决

发布时间: 2012-01-29 21:39:32 作者: rapoo

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


在调试的时候这个函数出现了错误,本来是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 允许写入

读书人网 >asp.net

热点推荐