2011-08-29 91 views
4

我正在使用visual basic 6.我有一个按钮,当按下时应该显示表中的所有条目。我正在使用以下代码连接到MySQL数据库。我已经使用了Microsoft远程数据服务作为我的参考如何从Visual Basic 6连接到MySQL数据库6

代码:

Private Sub cmdConnectMySQL_Click() 
Dim cnMySql As New rdoConnection 
Dim rdoQry As New rdoQuery 
Dim rdoRS As rdoResultset 

    cnMySql.CursorDriver = rdUseOdbc 
    cnMySql.Connect = "uid=root;pwd=; 
    server=localhost; driver={MySQL ODBC 3.51 Driver}; 
    database=demo;dsn=;" 
    cnMySql.EstablishConnection 
    With rdoQry 
    .Name = "selectUsers" 
    .SQL = "select * from user" 
    .RowsetSize = 1 
    Set .ActiveConnection = cnMySql 
    Set rdoRS = .OpenResultset(rdOpenKeyset, rdConcurRowVer) 
    End With 

    Do Until rdoRS.EOF 
    With rdoRS 
     rdoRS.MoveNext 
    End With 
    Loop 
    rdoRS.Close 
    cnMySql.Close 

End Sub 

我无法连接到数据库。我如何连接?

+1

你怎么知道你的连接失败?我不太了解VB,但我猜测有一些方法来检查EstablishConnection是否失败,也许你可以得到更多的信息,为什么...是不是找到了用户名/密码?驱动程序/连接器是否正确安装/定位?任何数量的事情都可能导致查询无法返回,您需要更多信息。 – prelic

回答

3

你可以尝试使用ADO而不是RDO吗?

  • 添加到Microsoft ActiveX数据对象的引用2.8库
  • 设置ODBC DSN连接到数据库

然后使用代码是这样的

Dim cnConnection As ADODB.Connection 
Dim adorsRecordSet As ADODB.Recordset 
Dim sDatabase As String 
Dim sSQL As String 

sDatabase = "NameOfTheMysqlDSN" 
sSQL= "Select * From user" 

Set cnConnection = New ADODB.Connection 
cnConnection.Open sDatabase 
Set adorsRecordSet = New ADODB.Recordset 

adorsRecordSet.Open sSQL, cnConnection 

Do Until (adorsRecordSet.EOF) 
    adorsRecordSet.MoveNext 
Loop 
+0

+1 ADO必须比RDO更好。首先,ADO仍然受到Microsoft的支持 – MarkJ

1
' the follwoing code inside module and use adodc 

Public Myconn As New ADODB.Connection 
Public Recset As New ADODB.Recordset 
Public SqlStr As String 
Public Function Connectdb() 
Set Myconn = New ADODB.Connection 
Set Recset = New ADODB.Recordset 
Myconn.Open "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties='DRIVER=SQL Server Native Client 10.0;SERVER=.\sqlexpress;Trusted_Connection=Yes;APP=Visual Basic;WSID=YOUNGPROGRAMA;DATABASE=StdB;';Initial Catalog=StdB" 
End Function 

' the following code inside ur form 

Private Sub Command1_Click() 

     Connectdb 
     SqlStr = "Insert into Logintb values('" + Text1.Text + "', '" + Text2.Text + "' )" 

     Recset.Open SqlStr, Myconn, adOpenKeyset, adLockOptimistic 

     MsgBox "New User Added" 


     Myconn.Close 



    End Sub 

Private Sub Form_Load() 
Connectdb 



With Form1 
.Top = (Screen.Height - .Height)/2 
.Left = (Screen.Width - .Width)/2 
End With 
End Sub 

'it works 
'for verification call Mr. Raji on 08067455933