最近碰到的VB访问SQL数据库的疑难问题,高手请进
向数据库新增记录时,我是这样写的:
dim rs as New ADODB.Recordset
dim conn as New ADODB.Connection
rs.open "select top 1 * from 表名 ",conn,1,3
rs.Addnew
...
添加语句
...
rs.Update
但是运行时,提示错误。错误信息如下:
run-time error '3251 ':
Current Recordset does not support updating,This may be a limitation of the provider,or of the selected locktype.
调试时发现错误发生在rs.Addnew处,请问这是什么问题,该如何解决?知道的朋友请指点一下,谢了
[解决办法]
dim rs as New ADODB.Recordset
dim conn as New ADODB.Connection
rs.open "select * from 表名 where 1=2 ",conn,adOpenKeyset, adLockOptimistic
rs.Addnew
...
添加语句
...
rs.Update
[解决办法]
似乎访问sql添加数据好像
rs.open "select top 1 * from 表名 ",conn,1,3
...
添加语句
...
rs.Update
即可,不需要rs.addnew
[解决办法]
新增记录:conn.execute "insert into tablename(...) values(...) "
修改记录:conn.execute "update tablename set ... where ... "
删除记录:conn.execute "delete from tablename where ... "
[解决办法]
dim rs as New ADODB.Recordset
dim conn as New ADODB.Connection
'.......................................
rs.open "select * from 表名 ",conn,adOpenKeyset, adLockOptimistic
'...................
rs.Addnew
...
添加语句
...
rs.Update
就可以了,你看看
[解决办法]
如果是插入记录的话建议不要用 Top 关键字,建议在 Where 条件上加一个不成功的值,如:
rs.open "select * from 表名 Where 1 = 2 ",conn,adOpenKeyset, adLockOptimistic
还有,连接有一个属性的 Mode 属性的,它是决定是否只读等,详细参数根据英文即可知道。
[解决办法]
rs.open "select * from 表名 Where 1 = 2 ",conn,adOpenKeyset, adLockOptimistic
[解决办法]
rs.open "select * from 表名 where id=0 ",conn,1,3
什么数据库阿?把conn的connectionstring改正以下看看呢,好像遇到过odbc那种的时候就没法更新的情况,换成oledb 的就ok了
1.odbc
Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
2.oledb
Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
[解决办法]
去看msdn,如果刚开始学,一定要学会看msdn