设为首页 - 加入收藏 华夏网 ()- 云主机,资讯,互联网,人工智能,云计算,大赢家论坛,区块链,VR,站长网!
热搜: 2017 2018 什么 市场
当前位置: 主页 > 水果奶奶论坛 > 正文

sql-server – VB6 ADODB.Recordset RecordCount属性始终返回-1

发布时间:2021-01-26 19:15 所属栏目:[水果奶奶论坛] 来源:网络整理
导读:我试图让一些旧的VB6代码与SQL Server Compact一起使用. 我可以连接,打开数据库,一切似乎都很好.我可以运行插入选择命令. 但是,ADODB.Recordset RecordCount属性始终返回-1,即使我可以访问Fields并查看数据.更改CursorLocation = adUseClient会在执行SQL(多步

我试图让一些旧的VB6代码与SQL Server Compact一起使用.

我可以连接,打开数据库,一切似乎都很好.我可以运行插入选择命令.

但是,ADODB.Recordset RecordCount属性始终返回-1,即使我可以访问Fields并查看数据.更改CursorLocation = adUseClient会在执行SQL(多步操作生成错误)时导致问题.

Option Explicit
    Private Const mSqlProvider          As String = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;"
    Private Const mSqlHost              As String = "Data Source=C:\Database.sdf;"
    Private mCmd                        As ADODB.Command   ' For executing SQL
    Private mDbConnection               As ADODB.Connection


Private Sub Command1_Click()


   Dim rs As ADODB.Recordset

    Set rs = New ADODB.Recordset


    Dim DbConnectionString As String

    DbConnectionString = mSqlProvider & _
                            mSqlHost


    Set mDbConnection = New ADODB.Connection
    mDbConnection.CursorLocation = adUseServer

    Call mDbConnection.Open(DbConnectionString)

    If mDbConnection.State = adStateOpen Then
        Debug.Print (" Database is open")
        ' Initialise the command object
        Set mCmd = New ADODB.Command
        mCmd.ActiveConnection = mDbConnection

        mCmd.CommandText = "select * from myTestTable"
        mCmd.CommandType = adCmdText

        Set rs = mCmd.Execute

        Debug.Print rs.RecordCount  ' Always returns -1  !!
        Debug.Print rs.Fields(0)   ' returns correct data for first row,first col
        Debug.Print rs.Fields(1)   ' returns correct data for first row,2nd col
        Debug.Print rs.Fields(2)   ' returns correct data for first row,3rd col

    End If

End Sub

任何建议都会被感激地接受.

解决方法

这是用于访问数据的游标类型的结果,这篇文章涵盖了问题和可能的修复.

http://www.devx.com/tips/Tip/14143

编辑

我为没有更加关注你正在处理Compact这一事实而道歉.使用Compact时,情况类似于我引用的情况,因为它默认使用仅向前游标(不支持行计数),但是有两种其他游标类型可用,如下面的链接中所述.

http://support.microsoft.com/kb/272067

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章