Avatar billede themaster Nybegynder
18. maj 2004 - 22:48 Der er 9 kommentarer og
1 løsning

VB5 og MySQL, connection problemmer

Hej Exp's

Jeg er i fuld gang med at lave en MySQL-klient i VB5. Men jeg kan ikke få den til at connecte. Tanken med programmet er at den skal kunne connecte til en hvilken som helst MySQL-server. Remote, Intranet eller på klientens computeren.

Her er koden:

    Set conn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    conn.Open = "DRIVER={MySQL ODBC 3.51 Driver};" _
            & "SERVER=" & server & ";" _
            & "DATABASE=mysql;" _
            & "UID=" & user & ";" _
            & "PWD=" & pwd & ";"

    rs.Open "SELECT * FROM db"
   
    rs.Close
    Set rs = Nothing
   
    conn.Close
    Set conn = Nothing

Her er fejlen:

Run-time error '3709'

The connection cannot be used to perform this operation. It is either closed or invalid in this context.

Og her debuger VB5:

    rs.Open "SELECT * FROM db"

Hvad er der galt??

//themaster
Avatar billede sjh Nybegynder
18. maj 2004 - 23:05 #1
(skal kunne connecte til en hvilken som helst MySQL-server)
Ja nu er det jo ikke alle som tillader connect ude fra..

fx. udbyder som tilbyder MySQL til en hjemmeside har aldrig open for MySQL ude fra..

Når men det kommer du jo ikke vider af..

Har du installeret "MySQL ODBC 3.51 Driver til windows"? hvis ikke så ville jeg starte med at gøre det.
Avatar billede themaster Nybegynder
18. maj 2004 - 23:15 #2
det har jeg gjort..

jeg ved godt at det ikke er særligt udbredt men open sql-connect. Men det kunne jo være brugeren gerne ville have muligheden. derfor skal man også kunne connecte remote.

//themaster
Avatar billede sjh Nybegynder
18. maj 2004 - 23:25 #3
du skal bruge .Execute() til din sql-string ;)


Private Sub Form_Load()
Dim strSQL As String
Dim strConn As String
Dim objConn As Object
Dim objRs  As Object

  Set objConn = CreateObject("ADODB.Connection")
  Set objRs = CreateObject("ADODB.RecordSet")

  strConn = "DRIVER={MySQL ODBC 3.51 Driver};" _
            & "SERVER=" & "192.168.0.151" & ";" _
            & "DATABASE=" & "mysql" & ";" _
            & "UID=" & "root" & ";" _
            & "PWD=" & "" & ";"

  strSQL = "SELECT * FROM db"

  With objConn
      .CommandTimeout = 30
      .ConnectionTimeout = 15
      .ConnectionString = strConn
      .Open
      Set objRs = .Execute(strSQL)
      .Close
  End With

  Set objConn = Nothing
  Set objRs = Nothing
End Sub
Avatar billede tubber Juniormester
18. maj 2004 - 23:31 #4
hmmm.....jeg bruger ikke .execute nogen steder når jeg arbejder med sql sætninger i VB (dog er det VB6), er det fordi jeg bruger en access database ?

Blander mig lige for at følge lidt med og lære :)
Avatar billede sjh Nybegynder
18. maj 2004 - 23:35 #5
Sådan så for du også noget ud af det ;)

Private Sub Form_Load()
Dim strSQL As String
Dim strConn As String
Dim objConn As Object
Dim objRs  As Object

  Me.AutoRedraw = True

  Set objConn = CreateObject("ADODB.Connection")
  Set objRs = CreateObject("ADODB.RecordSet")

  strConn = "DRIVER={MySQL ODBC 3.51 Driver};" _
            & "SERVER=" & "192.168.0.151" & ";" _
            & "DATABASE=" & "mysql" & ";" _
            & "UID=" & "root" & ";" _
            & "PWD=" & "" & ";"

  strSQL = "SELECT * FROM db"

  With objConn
      .CommandTimeout = 30
      .ConnectionTimeout = 15
      .ConnectionString = strConn
      .Open
      Set objRs = .Execute(strSQL)
  End With
 
  If Not (objRs.BOF Or objRs.EOF) Then

    Do While Not objRs.EOF
      Print objRs("Host")
      objRs.MoveNext
    Loop

  End If

  objConn.Close
  Set objConn = Nothing
  Set objRs = Nothing
End Sub
Avatar billede sjh Nybegynder
18. maj 2004 - 23:38 #6
connecte remote fortæller du her: SERVER=" & "192.168.0.151" & ";"... du skal bare skrive IP til den SQL-server du vil connecte til.
Avatar billede sjh Nybegynder
18. maj 2004 - 23:45 #7
hvis du skal gøre det til Microsoft SQL-Server så er det sådan:

  'MS SQL-Server
  strConn = "Provider=SQLOLEDB.1" & _
            ";user id=" & "user" & _
            ";pwd=" & "password" & _
            ";Initial Catalog=" & "katalog" & _
            ";server=" & "10.0.0.1" & ";"
Avatar billede sjh Nybegynder
19. maj 2004 - 02:12 #8
tubber < det tror jeg ikke man kan hvist nok også gørre det sådan:

.Open strSQL, strConn, 3
Avatar billede sjh Nybegynder
19. maj 2004 - 02:17 #9
Det kan man også :-)

Private Sub Form_Load()
Dim strSQL As String
Dim strConn As String
Dim objRs  As Object

  Me.AutoRedraw = True

  Set objRs = CreateObject("ADODB.RecordSet")

  strConn = "DRIVER={MySQL ODBC 3.51 Driver};" _
            & "SERVER=" & "192.168.0.151" & ";" _
            & "DATABASE=" & "mysql" & ";" _
            & "UID=" & "root" & ";" _
            & "PWD=" & "" & ";"

  strSQL = "SELECT * FROM db"

  With objRs
      .Open strSQL, strConn, 3

      If Not (.BOF Or .EOF) Then
   
        Do While Not .EOF
          Print objRs("Host")
          .MoveNext
        Loop
   
      End If

      .Close
  End With

  Set objRs = Nothing
End Sub
Avatar billede sjh Nybegynder
19. maj 2004 - 02:18 #10
så ved jeg bare ikke hvor man setter .CommandTimeout og .ConnectionTimeout
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester