[AutoIt] verbinding met SQL DB lukt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Stacey
  • Registratie: Oktober 2003
  • Laatst online: 11-09-2024
Hallo,

Met AutoIt probeer ik een verbinding te maken met een db op de server. Ik krijg dit niet voor elkaar...
code:
1
2
3
4
Servernaam: Server02
Gebruikersnaam: sa
Wachtwoord: ********
Database: Test1


Dit is de database versie:
Adaptive Server Enterprise/12.5.3/EBF 12461 ESD#2/P/NT (IX86)/OS 4.0/ase1253/1904/32-bit/OPT/Tue Mar 22 17:23:51 2005


Met ISQL in CMD krijg ik wel een verbinding.

Ik gebruik de volgende code.

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "MySQL.au3"

$UserName = "sa"
$Password = "*******"
$Database = "Test1"
$MySQLServerName = "server02"
$iPort = "6000"

$SQLInstance = _MySQLConnect($UserName,$Password,$Database,$MySQLServerName,$iPort)

$SQLCode = "SELECT * FROM Namen2"
$TableContents = _Query($SQLInstance,$SQLCode)

With $TableContents
While Not .EOF
$NameList &= .Fields ("Voornaam").value & " " & .Fields ("Achternaam").value & @CRLF
.MoveNext
WEnd
EndWith
MsgBox(0,"Guest List",$NameList)


De andere code is:

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include-once

#cs
    Function Name:    _MySQLConnect
    Description:      Initiate a connection to a MySQL database.
    Parameter(s):     $username - The username to connect to the database with.
    $password - The password to connect to the database with. $Database - Database to connect to.
    $server - The server your database is on.
    $driver (optional) the ODBC driver to use (default is "{MySQL ODBC 3.51 Driver}"
    Requirement(s):   Autoit 3 with COM support
    Return Value(s):  On success returns the connection object for subsequent functions. On failure returns 0 and sets @error
    @Error = 1
    Error opening connection
    @Error = 2
    MySQL ODBC Driver not installed.
    Author(s):        cdkid
#ce

Func _MySQLConnect($sUsername, $sPassword, $sDatabase, $sServer, $sDriver = "{MySQL ODBC 3.51 Driver}", $iPort=6000)
    Local $v = StringMid($sDriver, 2, StringLen($sDriver) - 2)
    Local $key = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers", $val = RegRead($key, $v)
    If @error or $val = "" Then
        SetError(2)
        Return 0
    EndIf
    $ObjConn = ObjCreate("ADODB.Connection")
    $Objconn.open ("DRIVER=" & $sDriver & ";SERVER=" & $sServer & ";DATABASE=" & $sDatabase & ";UID=" & $sUsername & ";PWD=" & $sPassword & ";PORT="&$iPort)
    If @error Then
        SetError(1)
        Return 0
    Else
        Return $ObjConn
    EndIf
EndFunc   ;==>_MySQLConnect


Ik krijg de volgende foutmelding:
\\Script\test DBcon.au3 (14) : ==> Only Object-type variables allowed in a "With" statement.:
With $TableContents
With ^ ERROR
>Exit code: 1    Time: 0.240

[ Voor 4% gewijzigd door RobIII op 18-09-2012 09:49 . Reden: Code tags toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Heb je dit zelf geschreven? Zo nee; breng het eerst een terug naar de basis. Ik ken AutoIt helemaal niet en de syntax dus ook niet, maar $TableContents moet kennelijk een object zijn dus ik vermoed dat je iets anders uit die Query call terugkrijgt.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Stacey
  • Registratie: Oktober 2003
  • Laatst online: 11-09-2024
Hydra schreef op maandag 17 september 2012 @ 12:58:
Heb je dit zelf geschreven? Zo nee; breng het eerst een terug naar de basis. Ik ken AutoIt helemaal niet en de syntax dus ook niet, maar $TableContents moet kennelijk een object zijn dus ik vermoed dat je iets anders uit die Query call terugkrijgt.
De code heb ik niet zelf geschreven maar dit is de basis:

VBScript:
1
2
3
4
5
6
$conn = ObjCreate( "ADODB.Connection" )
$DSN = "DRIVER={SQL Server};SERVER=MySvr;DATABASE=MyDB;UID=MyUser;PWD=MyPwd;"
$rs = ObjCreate( "ADODB.RecordSet" )
$rs.Open( "SELECT @@VERSION AS myVersion", $conn )
MsgBox(0, "AutoIT-SQL Result", "Value = " & $rs.Fields( "myVersion" ).Value )
$conn.close


$TableContents is geen object omdat de verbinding niet tot stand komt kennelijk...

[ Voor 30% gewijzigd door RobIII op 18-09-2012 09:48 . Reden: Code tags toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Dus wat komt er nu wel uit de call? Waarmee is $tableContents nu gevuld? Is de query succesvol uitgevoerd? Zo nee, kan je een foutmelding tevoorschijn halen? Is de verbinding gelukt? Zo nee, kan je een foutmelding tevoorschijn halen?

Zo blind lopen gokken schiet niet op natuurlijk. Dus ga stap voor stap eens controleren wat er nu wel lukt. Gewoon een kwestie van debuggen, en dat zul je als eerste toch echt zelf moeten doen ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • dragon4ce
  • Registratie: Oktober 2010
  • Niet online

dragon4ce

hardware freak

werkt het wel als je

$MySQLServerName = "server02"

naar
$MySQLServerName = "127.0.0.1"

veranderd?

Omdat het kan.


Acties:
  • 0 Henk 'm!

  • Stacey
  • Registratie: Oktober 2003
  • Laatst online: 11-09-2024
dragon4ce schreef op maandag 17 september 2012 @ 14:30:
werkt het wel als je

$MySQLServerName = "server02"

naar
$MySQLServerName = "127.0.0.1"

veranderd?
Nee, dat veranderd niets aan de foutmelding:

\\Script\test DBcon.au3 (6) : ==> The requested action with this object has failed.:
$rs.Open( "SELECT @@VERSION AS myVersion", $conn )
$rs.Open( "SELECT @@VERSION AS myVersion", $conn )^ ERROR
>Exit code: 1    Time: 0.230

[ Voor 1% gewijzigd door RobIII op 18-09-2012 09:48 . Reden: cmd tag toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Oftewel het is niet je eigen code, je hebt geen idee wat er misgaat, kunt niet debuggen en verwacht dat wij het voor je oplossen met onze glazen bol?

https://niels.nu


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:10
Je gebruikt code die geschreven is voor MySQL met een Adaptive database. Het lijkt me dat je daar eerst eens naar moeten kijken.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • Stacey
  • Registratie: Oktober 2003
  • Laatst online: 11-09-2024
urk_forever schreef op maandag 17 september 2012 @ 15:07:
Je gebruikt code die geschreven is voor MySQL met een Adaptive database. Het lijkt me dat je daar eerst eens naar moeten kijken.
Oke Urk, bedankt. Ik wist niet dat er verschil in zat. Ik zal even gaan googlen op adaptive database. Voor de anderen, ik ben al de hele dag bezig te debuggen...

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 19:24

Patriot

Fulltime #whatpulsert

Stacey schreef op maandag 17 september 2012 @ 15:27:
[...]


Oke Urk, bedankt. Ik wist niet dat er verschil in zat. Ik zal even gaan googlen op adaptive database. Voor de anderen, ik ben al de hele dag bezig te debuggen...
Dat laat je echter niet zien. Laat eens zien wat je zoal gedaan hebt de hele dag, dan weten wij namelijk ook meteen wat wij je niet meer hoeven te vragen. Je mag echt wel iets meer moeite steken in zo'n vraag.

Acties:
  • 0 Henk 'm!

  • Stacey
  • Registratie: Oktober 2003
  • Laatst online: 11-09-2024
Patriot schreef op dinsdag 18 september 2012 @ 00:25:
[...]


Dat laat je echter niet zien. Laat eens zien wat je zoal gedaan hebt de hele dag, dan weten wij namelijk ook meteen wat wij je niet meer hoeven te vragen. Je mag echt wel iets meer moeite steken in zo'n vraag.
Mijn excuses...

Nou ik ben dus de hele dag bezig geweest om een connectie te maken met de adaptive database met een MySQL code... Ik heb allerlei drivers en providers geprobeerd, zowel op de server als op het werkstation. Omdat ik geen verstand heb van de verschillende soorten dbservers kom ik er na de opmerking van Urk pas achter dat het om een adaptive db gaat. Dit houd in dat ik weer andere providers en drivers kan proberen.

Dit heb ik gevonden. Nu nog uitzoeken welke te gebruiken...

http://www.connectionstrings.com/sybase-adaptive#40
http://www.connectionstrings.com/sybase-adaptive#41

Kunnen jullie nog wat bedenken wat me eventueel verder kan helpen?

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:10
Als je met ODBC wilt werken, zoals in je eerdere code voorbeelden, heb je denk ik deze nodig:

http://www.connectionstrings.com/sybase-adaptive#p42

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • Stacey
  • Registratie: Oktober 2003
  • Laatst online: 11-09-2024
urk_forever schreef op dinsdag 18 september 2012 @ 09:19:
Als je met ODBC wilt werken, zoals in je eerdere code voorbeelden, heb je denk ik deze nodig:

http://www.connectionstrings.com/sybase-adaptive#p42
Urk_forever, bedankt, het is gelukt! Hieronder de code die ik gebruikt heb:

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$objErr = ObjEvent("AutoIt.Error","MyErrFunc")
$ado = ObjCreate("ADODB.Connection")
$ado.Open("Driver={Adaptive Server Enterprise};server=server02;port=6000; db=RS;uid=sa;pwd=*****")
$adors = $ado.execute("SELECT * FROM namen2")
While not $adors.EOF
    MsgBox(0, "Result", "Voornaam = " & $adors.Fields("voornaam").Value & " - Achternaam = " & $adors.Fields("achternaam").Value)
    $adors.MoveNext
WEnd

$adors=0
$ad0=0

Func MyErrFunc()

$hexnum=hex($objErr.number,8)

Msgbox(0,"","We intercepted a COM Error!!"        & @CRLF                   & @CRLF & _
             "err.description is: "    & $objErr.description    & @CRLF & _
             "err.windescription is: " & $objErr.windescription & @CRLF & _
             "err.lastdllerror is: "   & $objErr.lastdllerror   & @CRLF & _
             "err.scriptline is: "     & $objErr.scriptline     & @CRLF & _
             "err.number is: "         & $hexnum                 & @CRLF & _
             "err.source is: "         & $objErr.source         & @CRLF & _
             "err.helpfile is: "       & $objErr.helpfile       & @CRLF & _
             "err.helpcontext is: "    & $objErr.helpcontext _
            )
exit
EndFunc


Ik was er dus bijna! Enkel de juiste driver aanroepen was voldoende... Bedankt voor jullie hulp en de groeten uit Emmeloord.

[ Voor 2% gewijzigd door RobIII op 18-09-2012 09:47 . Reden: Code tags gefixed ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
@Stacey: Wil je voortaan code tags gebruiken bij 't posten van code? Thanks d:)b

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Stacey
  • Registratie: Oktober 2003
  • Laatst online: 11-09-2024
RobIII schreef op dinsdag 18 september 2012 @ 09:46:
@Stacey: Wil je voortaan code tags gebruiken bij 't posten van code? Thanks d:)b
Dat wil ik!
Pagina: 1