我先定义了两个全局变量
Public PCN As New ADODB.Connection
Public REC As New ADODB.Recordset连接数据库
conn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID= 'sa';password='';Initial Catalog='Door';Data Source="
PCN.Open conn查询按扭代码
REC.CursorLocation = adUseClient
REC.Open "select * from users", PCN
Set VSFlexGrid1.DataSource = REC
REC.Close增加记录按扭代码
If Not REC.State = adStateClosed Then
REC.Close
End IfREC.CursorLocation = adUseClient
REC.Open "Insert into Users values('111', 'ning', '3', 0, 'sddsd ')", PCN
'如果放开下面代码,就会出现对象关闭时,不允许操作
'REC.Close问题:
1。为什么查询之后,close没有问题。而在增加记录后,不能执行close,不然会出错。我感觉recordset用完之后,应该close才对。
2。我对这段代码不太了解,也是在网上找的。谁能帮我解释一下,应该怎么写最完美?
REC.CursorLocation = adUseClient'这个属性有什么用,还有哪些属性要设置?
If Not REC.State = adStateClosed Then REC.Close’这句话好像没什么用?我调试时,看到这段代码好像并没有执行。
REC.Open "select * from users", PCN’这句话后面的参数是干什么的,我在网上看到还有其它写法,哪些是有用的,哪些是没用的?
3。PCN.Execute ("select * from users")
这句话也能执行,但是它跟recordset的open语句有什么区别?怎么遍历它返回的记录?
注:小弟是初学。请多指教。

解决方案 »

  1.   

    增加用:
    pcn.execute "Insert into Users values('111', 'ning', '3', 0, 'sddsd')"
      

  2.   

    lz应当看看ado方面的书,问题不少.
    1.If Not REC.State = adStateClosed Then REC.Close 是判断记录集运行状态,防止出错2.REC.CursorLocation = adUseClient 是设置游标类型
    在Recordset对象还有一个属性CursorLocation用于指定游标的位置,我们可以指定使用客户端的游标,也可以指定使用服务器端游标。CursorLocation属性的缺省值为adUseServer,使用服务器端游标的好处是,程序对数据库的修改可以立即反映到服务器,而且,其他用户对数据库的操作也可以马上反映出来,但使用服务器端游标带来了高网络流量,每一个数据访问都需要通过网络交换数据。    ADO提供了客户端数据缓存处理,因此,在打开Recordset对象前,可以设置CursorLocation为adUseClient,指定使用客户端游标。通过客户端游标,ADO利用本地数据缓存以降低网络流量,虽然在数据访问灵活性上有所损失,但却大大提高了通过网络访问数据库的性能。3.PCN.Execute 跟recordset的open语句有什么区别
    一般不需要返回记录的用Execute,否则用open
      

  3.   

    1) INSERT 语句没有返回记录,所以 Open 其实是没有正真成功(指获取记录的目的没有成功),既然 Open 不成功,那么调用 Close 当然会出错。3) Connection.Execute() 返回的记录集只能是只读、仅向前的,而 RecordSet.Open() 可以通过参数指定可读写性、游标的方式等。
      

  4.   

    2,from MSDN:
    adUseClient 使用由本地游标库提供的客户端游标。本地游标引擎通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。adUseClientBatch 与 adUseClient 同义,也支持向后兼容性。 
    adUseServer 默认值。使用数据提供者或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。 简单点说,adUseClient 在操作上功能多些,但更新没那么及时
    3,同样是查询,"select * from users", REC.Open 还可以指定LockType,比如锁定数据不让别的用户更改. 一般来说,当你的程序要考虑到多用户操作,或是数据库事务处理时,则要注意选用合适的方式做合适的事.
    而且,那些参数的使用,还会因数据库类型不同而有细微区别,比如orale和mssql就有一些区别
      

  5.   

    open 后面带的参数可以之前就设置,这里是一起传进去的,如果之前设置也是一样.
        With REC
            Set .ActiveConnection = PCN
            .CursorLocation = adUseClient
            .CursorType = adOpenStatic
            .LockType = adLockReadOnly
            
            .Open "select * from users"
            '……
        End With
      

  6.   

    看看ado帮助 http://www.microsoft.com/data/ado