Tôi đang cố gắng để có được một số mã VB6 cũ để làm việc với SQL Server Compact.VB6 ADODB.Recordset RecordCount tài sản luôn luôn trả về -1
Tôi có thể kết nối, mở cơ sở dữ liệu và tất cả đều có vẻ tốt. Tôi có thể chạy chèn lệnh chọn mà làm việc.
Tuy nhiên thuộc tính ADODB.Recordset RecordCount luôn trả về -1 mặc dù tôi có thể truy cập Trường và xem dữ liệu. Thay đổi CursorLocation = adUseClient gây ra một vấn đề khi thi hành SQL (các lỗi được tạo ra trong nhiều bước).
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
Bất kỳ lời khuyên nào cũng sẽ được chấp nhận một cách biết ơn.
đã thử cả hai phương pháp và cả hai đều không thực thi được "chọn * từ myTestTable ". Ngẫu nhiên, nếu tôi mở sdf thông qua Sql Server Management Studio 2008 sql hoạt động và trả về 11 hàng. – Belliez