Jump to content

Autoit & Mysql problems!


damix
 Share

Recommended Posts

Hey everyone, Im working on a program that needs to check & write to a mysql database. But nothing happends when I run it, Here is the full MYSQL code.

#include "MYSQL.au3"


Dim $NameList
Dim $UserName = "root"
Dim $Password = "Ksadkal08"
Dim $Database = "damit"
Dim $MySQLServerName = "localhost"
Dim $TableName = "keycheck"
Dim $ColumnNames[3]
Dim $NewGuest[6]
Dim $Column = "Key"
Dim $RecordID = $Key
$sPrimeKey = "Key"
$sTbl = $Key

$ColumnNames[0]= "Key"
$ColumnNames[1]= "IP"
$ColumnNames[2]= "Inuse"

; GUI HERE WONT POST IT 

Case $Launch
        _GetIP()
        $keytype = "INTEGER"
        $sNotNull = "yes"
        $keyautoinc = "yes"
        $sType = "InnoDB"
        $sDriver = "{MySQL ODBC 3.51 Driver}" 
        $iPort=3306
        ;_MySQLConnect($UserName, $Password, $Database, $MySQLServerName, $sDriver = "{MySQL ODBC 3.51 Driver}", $iPort=3306)
        $oConnectionObj = _MySQLConnect ($UserName, $Password, $Database, $MySQLServerName)
        _CreateTable($oConnectionObj, $sTbl, $sPrimeKey, $keytype = "INTEGER", $sNotNull = "yes", $keyautoinc = "yes", $sType = "InnoDB")
        Mysql()


Func Mysql()
$TableName = "keycheck"
$ColumnName3= "Key"
$ColumnName2= "IP"
$ColumnName1 = "Inuse"
$PublicIP = _GetIP()
$Inuse = "2"
$SQLInstance = _MySQLConnect ($UserName, $Password, $Database, $MySQLServerName)
 
DisplayTable()
 
_AddRecord($SQLInstance,$TableName,$ColumnNames,$Key)

_AddRecord($SQLInstance,$TableName,$ColumnNames,$PublicIP)

_AddRecord($SQLInstance,$TableName,$ColumnNames,$Inuse)

MsgBox(4096, "Done", "No file chosen, saving cancelled")
EndFunc

Func _GetIP()
    Local $ip
    If InetGet("http://www.whatismyip.com", @TempDir & "\~ip.tmp") Then
        $ip = FileRead(@TempDir & "\~ip.tmp", FileGetSize(@TempDir & "\~ip.tmp"))
        FileDelete(@TempDir & "\~ip.tmp")
        $ip = StringTrimLeft($ip, StringInStr($ip, "<TITLE>Your ip is ") + 17)
        $ip = StringLeft($ip, StringInStr($ip, " WhatIsMyIP.com</TITLE>") - 1)    
        Return $ip
    Else
        SetError(1)
        Return -1
    EndIf
EndFunc

Func DisplayTable()
    $SQLInstance = _MySQLConnect ($UserName, $Password, $Database, $MySQLServerName)
    $NameList = ""
    $SQLCode = "SELECT * FROM keycheck"
    $TableContents = _Query ($SQLInstance, $SQLCode)
    With $TableContents
        While Not .EOF
            $NameList &= .Fields ("Key").value & " " & .Fields ("IP").value & @CRLF
            .MoveNext
        WEnd
    EndWith
    ;MsgBox(0,"Guest List",$NameList)
EndFunc

I use the MYSQL.Au3 file that is posted somewhere around the forums.

Here is the MYSQL.Au3 file,

#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($UserName, $Password, $Database, $MySQLServerName, $sDriver = "{MySQL ODBC 3.51 Driver}", $iPort=3306)
    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

#cs
    Function name: _Query
    Description:     Send a query to the database
    Parameter(s):  $oConnectionObj - As returned by _MySQLConnect. $query - The query to execute
    Return Value(s):On success returns the query result. On failure returns 0 and sets @error to 1
    Requirement(s):Autoit3 with COM support
    Author(s):        cdid
#ce


Func _Query($oConnectionObj, $sQuery)
    If IsObj($oConnectionObj) Then
        Return $oConnectionobj.execute ($sQuery)
    EndIf
    If @error Then
        SetError(1)
        Return 0
    EndIf
    
EndFunc   ;==>_Query

#cs
    Function name: _MySQLEnd
    Description:      Closes the database connection (see notes!)
    Parameter(s):   $oConnectionObj - The connection object as returned by _MySQLConnect()
    Requirement(s):Autoit 3 with COM support
    Return Value(s):On success returns 1. On failure returns 0 and sets @error to 1
    Author(s):         cdkid
#ce

Func _MySQLEnd($oConnectionObj)
    If IsObj($oConnectionObj) Then
        $oConnectionObj.close
        Return 1
    Else
        SetError(1)
        Return 0
    EndIf
EndFunc   ;==>_MySQLEnd

#cs
    Function name: _AddRecord
    Description:     Adds a record to the specified table
    Note(s):           to add to multiple columns use an array with one blank element at the end as the $sColumn, and $value parameter
    Parameter(s):   $oConnectionObj - As returned by _MySQL Connect. $sTable - The table to put the record in
                    $row - The row to put the record in. $value - The value to put into the row
                    $vValue - OPTIONAL default will be default for the column (will not work with array, see notes)
    Requirement(s): Autoit 3 with COM support
    Return value(s): On success returns 1. If the connectionobj is not an object returns 0 and sets @error to 2. If there is any other error returns 0 and sets @error to 1.
    Author(s): cdkid
#ce

Func _AddRecord($oConnectionObj, $sTable, $vRow, $vValue = "")
    If IsObj($oConnectionObj) Then
        $query = "INSERT INTO " & $sTable & " ("
        
        If IsArray($vRow) Then
            For $i = 0 To UBound($vRow, 1) - 1
                If $i > 0 And $i <> UBound($vRow, 1) - 1 Then
                    $query = $query & "," & $vRow[$i] & ""
                ElseIf $i = UBound($vRow, 1) - 1 And $vRow[$i] <> "" Then
                    $query = $query & "," & $vRow[$i] & ") VALUES("
                ElseIf $i = 0 Then
                    $query = $query & "" & $vRow[$i] & ""
                ElseIf $vRow[$i] = "" Then
                    $query = $query & ") VALUES("
                EndIf
            Next
        EndIf
        If Not IsArray($vRow) And Not IsArray($vValue) And Not IsInt($vValue) Then
            $oConnectionobj.execute ("INSERT INTO " & $sTable & " (" & $vRow & ") VALUES('" & $vValue & "')")
            return 1
        ElseIf IsInt($vValue) And Not IsArray($vRow) And Not IsArray($vValue) Then
            $oconnectionobj.execute ("INSERT INTO " & $sTable & " (" & $vRow & ") VALUES(" & $vValue & ")")
            return 1
        EndIf
        
        If IsArray($vValue) Then
            For $i = 0 To UBound($vValue, 1) - 1
                If $i > 0 And $i <> UBound($vValue, 1) - 1 And Not IsInt($vValue[$i]) Then
                    $query = $query & ",'" & $vValue[$i] & "'"
                ElseIf $i = UBound($vValue, 1) - 1 And $vValue[$i] <> "" And Not IsInt($vValue[$i]) Then
                    $query = $query & ",'" & $vValue[$i] & "');"
                ElseIf $i = 0 And Not IsInt($vValue[$i]) Then
                    $query = $query & "'" & $vValue[$i] & "'"
                ElseIf $vValue[$i] = "" Then
                    $query = $query & ");"
                ElseIf IsInt($vValue[$i]) And $vValue[$i] <> "" Then
                    $query = $query & "," & $vValue[$i]
                EndIf
            Next
        EndIf
        If StringRight($query, 2) <> ");" Then
            $query = $query & ");"
            
        EndIf
        $oconnectionobj.execute ($query)
    EndIf
    If Not IsObj($oConnectionObj) Then
        SetError(2)
        Return 0
    EndIf
    If @error And IsObj($oConnectionObj) Then
        Return 0
        SetError(1)
    Else
        Return 1
    EndIf
    
EndFunc   ;==>_AddRecord


#cs
    Function name: _DeleteRecord
    Description:     Deletes a record from the specified table
    Parameter(s):  $oConnectionObj - As returned by _MySQLConnect. $sTable - The table to delete from.
    $sColumn - The column to check value (see the example in the next post) $vRecordVal -
    The value to check in $sColumn (see example).
    $iLimit (optional) - the max number of record to delete if multiple match the criteria (default 1)
    Return Value(s): On success returns 1. If there $oConnectionObj is not an object returns 0 and sets @error to 1. If there are any other errors returns 0 and sets @error to 2
    Requirement(s): Autoit 3 with COM support
#ce

Func _DeleteRecord ($oConnectionObj, $sTable, $sColumn, $vRecordVal, $iLimit = 1)
    If IsObj($oConnectionObj) And Not IsInt($vRecordVal) Then
        $oconnectionobj.execute ("DELETE FROM " & $sTable & " WHERE " & $sColumn & " = '" & $vRecordVal & "' LIMIT " & $iLimit & ";")
    ElseIf IsInt($vRecordVal) Then
        $oconnectionobj.execute ("DELETE FROM " & $sTable & " WHERE " & $sColumn & " = " & $vRecordVal & " LIMIT " & $iLimit & ";")
        If Not @error Then
            Return 1
        ElseIf Not IsObj($oConnectionObj) Then
            SetError(1)
            Return 0
        ElseIf @error And IsObj($oConnectionObj) Then
            SetError(2)
            Return 0
        EndIf
    EndIf
EndFunc   ;==>_DeleteRecord

#cs
    Function name: _CreateTable()
    Description: Creates a table
    Parameters: $oConnectionObj - as returned by _MySQLConnect, $sTbl - The name of the table to create, $sPrimeKey - The name of the
    primary key column. $keytype - The datatype of the primary key (default is integer), $sNotNull - "yes" = must be filled out whenever
    a record is added "no" does not need to be filled out ("yes" default). $keyautoinc - "yes" = Auto incrememnts "no" = does not.
    $sType - The table type (default is InnoDB)
    Requirements: Autoit V3 with COM support
    Return value(s): on success returns 1 on failure sets @error to 1 and returns 0
    Author: cdkid
#ce

Func _CreateTable($oConnectionObj, $sTbl, $sPrimeKey, $keytype = "INTEGER", $sNotNull = "yes", $keyautoinc = "yes", $sType = "InnoDB")
    If IsObj($oConnectionObj) And Not @error Then
        $str = "CREATE TABLE " & $sTbl & " " & "(" & $sPrimeKey & " " & $keytype & " UNSIGNED"
        If $sNotNull = "yes" Then
            $str = $str & " NOT NULL"
        EndIf
        
        If $keyautoinc = "yes" Then
            $str = $str & " AUTO_INCREMENT,"
        EndIf
        
        $str = $str & " PRIMARY KEY (" & $sPrimeKey & " )" & " ) " & "TYPE = " & $sType & ";"
        $oConnectionObj.execute ($str)
        Return 1
        
        
    ElseIf @error Then
        Return 0
        SetError(1)
    EndIf
    
EndFunc   ;==>_CreateTable

#cs
    Function Name: _CreateColumn
    Description: Creates a column in the given table
    Requirements: AutoitV3 with COM support
    Parameters: $oConnectionObj - as returned by _MySQLConnect. $sTable - the name of the table to add the column to.
    $sAllowNull - if 'yes' then does not add 'NOT NULL' to the SQL statement (default 'yes') $sDataType - The data type of the column
    default('VARCHAR(45)').     $sAutoInc - if 'yes' adds 'AUTO_INCREMENT' to the MySQL Statement (for use with Integer types)
    default('no').      $sUnsigned - if 'yes' adds 'UNSIGNED' to the MySQL statement. default('no') $vDefault - the default value of the column
    default('')
    Author: cdkid
#ce

Func _CreateColumn($oConnectionObj, $sTable, $sColumn, $sAllowNull = "no", $sDataType = "VARCHAR(45)", $sAutoInc = "no", $sUnsigned = "no", $vDefault = '')
    If IsObj($oConnectionObj) And Not @error Then
        $str = "ALTER TABLE `" & $sTable & "` ADD COLUMN `" & $sColumn & "` " & $sDataType & " "
        If $sAllowNull = "yes" Then
            $str = $str & "NOT NULL "
        EndIf
        If $sAutoInc = 'yes' Then
            $str = $str & "AUTO_INCREMENT "
        EndIf
        If $sUnsigned = 'yes' Then
            $str = $str & "UNSIGNED "
        EndIf
        $str = $str & "DEFAULT '" & $vDefault & "';"
        $oConnectionObj.execute ($str)
        Return 1
    Else
        SetError(1)
        Return 0
    EndIf
    
EndFunc   ;==>_CreateColumn

#cs
    Function Name: _DropCol()
    Description: Delete a column from the given table
    Requirements: AutoitV3 with COM support
    Parameters: $oConnectionObj - As returned by _MySQLConnect(). $sTable - The name of the table to delete the column from
    $sColumn - THe name of the column to delete
    Author: cdkid
#ce

Func _DropCol($oConnectionObj, $sTable, $sColumn)
    If IsObj($oConnectionObj) & Not @error Then
        $oConnectionObj.execute ("ALTER TABLE " & $sTable & " DROP COLUMN " & $sColumn & ";")
        Return 1
    ElseIf @error Then
        SetError(1)
        Return 0
    EndIf
EndFunc   ;==>_DropCol

#cs
    Function Name: _DropTbl()
    Description: Deletes a table from the database
    Requirements: AutoitV3 with COM support
    Parameters: $oConnectionObj - As returned by _MySQLConnect. $sTable - The name of the table to delete
    Author: cdkid
#ce

Func _DropTbl($oConnectionObj, $sTable)
    If IsObj($oConnectionObj) And Not @error Then
        $oConnectionObj.execute ("DROP TABLE " & $sTable & ";")
        Return 1
    Else
        SetError(1)
        Return 0
    EndIf
EndFunc   ;==>_DropTbl


#cs
    Function name: _CountRecords()
    Description: Get the number of records in the specified column
    Parameters: $oConnectionObj - As returned by _MySQLConnect. $sTable - The name of the table that the column is in
    $value - If not = "" then it is put in the select statement in the WHERE clause (default "")
    Return value(s): On success returns the number of records. On failure sets @error to 1 and returns 0
    Author: cdkid
#ce
Func _CountRecords($oConnectionObj, $sTable, $sColumn, $vValue = '')
    If IsObj($oConnectionObj) And Not @error Then
        
        If $sColumn <> "" And $vValue <> "" And Not IsInt($vValue) Then
            $constr = "SELECT " & $sColumn & " FROM " & $sTable & " WHERE " & $sColumn & " = '" & $vValue & "'"
        ElseIf $sColumn <> "" And $vValue = '' And Not IsInt($vValue) Then
            $constr = "SELECT " & $sColumn & " FROM " & $sTable
        ElseIf IsInt($vValue) And $sColumn <> '' And $vValue <> '' Then
            $constr = "SELECT " & $sColumn & " FROM " & $sTable & " WHERE " & $sColumn & " = " & $vValue
        EndIf
        $sql2 = ObjCreate("ADODB.Recordset")
        $sql2.cursorlocation = 3
        $sql2.open ($constr, $oConnectionObj)
        With $sql2
            $ret = .recordcount
        EndWith
        $sql2.close
        Return $ret
    Else
        SetError(1)
        Return 0
    EndIf
EndFunc   ;==>_CountRecords

#cs
    Function name: _CountTables
    Description: Counts the number of tables in the database
    Parameter(s): $oConnectionObj - As returned by _MySQLConnect
    Return value(s): if error - returns 0 and sets @error to 1. on success returns the number of tables in the database
    Author: cdkid
#ce

Func _CountTables($oConnectionObj)
    If IsObj($oConnectionObj) Then
        $quer = $oConnectionObj.execute ("SHOW TABLES;")
        $i = 0
        With $quer
            While Not .EOF
                $i = $i + 1
                .MoveNext
            WEnd
        EndWith
        Return $i
    EndIf
    If @error Then
        SetError(1)
        Return 0
    EndIf
    
EndFunc   ;==>_CountTables

#cs
    Function name: _GetColNames
    Description: Get's the names of all columns in a specified table
    Parameters: $oConnectionObj - As returned by _MySQLConnect. $sTable - The name of the table to get the column names from
    Return values: On success returns an array where $array[0] is the number of elements in the array and all the rest are column names.
    On failure returns 0 and sets @error to 1
    Author: cdkid
#ce
Func _GetColNames($oConnectionObj, $sTable)
    If IsObj($oConnectionObj) And Not @error Then
        Dim $ret[1], $rs
        
        $rs = $oConnectionObj.execute ("SHOW COLUMNS FROM " & $sTable & ";")
        
        With $rs
            While Not .EOF
                
                ReDim $ret[UBound($ret, 1) + 1]
                $ret[UBound($ret, 1) - 1] = $rs.Fields (0).Value
                .MoveNext
            WEnd
        EndWith
        $ret[0] = UBound($ret, 1) - 1
        Return $ret
    EndIf
    If @error Then
        Return 0
        SetError(1)
    EndIf
EndFunc   ;==>_GetColNames


#cs
    Function name: _GetTblNames
    Description: Gets the names of all tables in the database
    Parameters: $oConnectionObj - As returned by _MySQLConnect
    Return value(s): On success returns an array where $array[0] is the number of tables and $array[n] is the nth table's name
    on failure - returns 0 and sets @error to 1
    Author: cdkid
#ce

Func _GetTblNames($oConnectionObj)
    If IsObj($oConnectionObj) Then
        Dim $ret[1]
        $quer = $oConnectionObj.execute ("SHOW TABLES;")
        With $quer
            While Not .eof
                ReDim $ret[UBound($ret, 1) + 1]
                $ret[UBound($ret, 1) - 1] = .fields (0).value
                .movenext
            WEnd
        EndWith
        $ret[0] = UBound($ret, 1) - 1
        Return $ret
    EndIf
EndFunc   ;==>_GetTblNames

#cs
    Function name: _GetColVals
    Description: Gets all of the values of a specified column in a specified table
    Parameters: $oConnectionObj - As returned by _MySQLConnect(), $sTable - the table that the column is in
    $sColumn - the column to get values from.
    Return value(s): On success returns an array where $array[0] is the number of values and $array[n] is the Nth value
    On failure sets @error to 1 and returns 0
    Author: cdkid
#ce

Func _GetColVals($oConnectionObj, $sTable, $sColumn)
    If IsObj($oConnectionObj) Then
        Dim $ret[1]
        $quer = $oConnectionObj.execute ("SELECT " & $sColumn & " FROM " & $sTable & ";")
        With $quer
            While Not .EOF
                ReDim $ret[UBound($ret, 1) + 1]
                $ret[UBound($ret, 1) - 1] = .Fields (0).value
                .MoveNext
            WEnd
        EndWith
        $ret[0] = UBound($ret, 1) - 1
        Return $ret
    EndIf
EndFunc   ;==>_GetColVals

#cs
    Function name: _GetColCount
    Description: Gets the number of columns in the specified table
    Parameters: $oConnectionObj - As returned by _MySQLConnect(). $sTable - the table to count the columns in
    Return Value(s): On success returns the number of columns in the table. On failure returns -1 and sets @error to 1
    Author: cdkid
#ce
Func _GetColCount($oConnectionObj, $sTable)
    If IsObj($oConnectionObj) Then
        $quer = $oConnectionObj.execute ("SHOW COLUMNS IN " & $sTable)
        With $quer
            $i = 0
            While Not .eof
                $i = $i + 1
                .movenext
            WEnd
        EndWith
        Return $i
    EndIf
    If @error Then
        Return -1
        SetError(1)
    EndIf
    
EndFunc   ;==>_GetColCount

#cs
    Function name: _GetColType
    Description: Gets the DATA TYPE of the specified column
    Parameters: $oConnectionObj - As returned by _MySQLConnect(). $sTable - the table that the column is in. $sColumn - the column
    to retrieve the data type from.
    Return value(s): On success returns the data type of the column. On failure returns 0 and sets @error to 1
    Author: cdkid
#ce
Func _GetColType($oConnectionObj, $sTable, $sColumn)
    If IsObj($oConnectionObj) Then
        $quer = $oConnectionObj.execute ("SHOW COLUMNS IN " & $sTable)
        With $quer
            $i = 0
            While Not .eof
                If .fields (0).value = $sColumn Then
                    $ret = .fields (1).value
                EndIf
                .MoveNext
            WEnd
        EndWith
        Return $ret
    EndIf
    If @error Then
        Return 0
        SetError(1)
    EndIf
EndFunc   ;==>_GetColType

#cs
    Function: _GetDBNames
    Description: Get a count and list of all databases on current server.
    Parameters: $oConObj - As returned by _MySQLConnect
    Return Value(s): Success - An array where $array[0] is the number of databases and $array[n] is the nth database name.
    Failure - -1 and sets @error to 1
    Author: cdkid
#ce
Func _GetDBNames($conobj)
    If IsObj($conobj) Then
        Local $arr[1], $m
        $m = $conobj.Execute ("SHOW DATABASES;")
        With $m
            While Not .eof
                ReDim $arr[UBound($arr, 1) + 1]
                $arr[UBound($arr, 1) - 1] = .Fields (0).Value
                .MoveNext
            WEnd
        EndWith
        $arr[0] = UBound($arr, 1) - 1
        Return $arr
    Else
        SetError(1)
        Return -1
    EndIf
EndFunc   ;==>_GetDBNames

#cs
    Function: _ChangeCon
    Description: Change your connection string
    Parameters:
    $oConnectionObj
    As returned by _MySQLConnect
    $username
    OPTIONAL: the new username to use
    If omitted, the same username will be used.
    $password
    OPTIONAL: the new password to use
    If omitted, the same password will be used.
    $database
    OPTIONAL: the new database to connect to
    If omitted, the same database will be used.
    $driver
    OPTIONAL: the new driver to use
    If omitted, the MySQL ODBC 3.51 DRIVER will be used.
    $server
    OPTIONAL: the new server to connect to
    If omitted, the same server will be used.
    $iPort
    OPTIONAL: the new port to be used to connect
    if omitted, the default port (3306) will be used
    Return Value:
    On success, a new connection object for use with subsequent functions.
    On failure, -1 and sets @error to 1
    Author: cdkid
#ce

Func _ChangeCon($oConnectionObj, $username = "", $password = "", $database = "", $driver = "", $server = "", $iPort = 0)
    Local $constr, $db, $usn, $pwd, $svr
    If IsObj($oConnectionObj) Then
        $constr = $oConnectionObj.connectionstring
        $constr = StringReplace($constr, 'Provider=MSDASQL.1;Extended Properties="', '')
        $constr = StringSplit($constr, ";")
        For $i = 1 To $constr[0]
            If StringLeft($constr[$i], 3) = "UID" Then
                If $username <> "" Then
                    $usn = $username
                Else
                    $usn = StringMid($constr[$i], 5)
                EndIf
                $usn = StringTrimRight($usn, 1)
            EndIf
            If StringLeft($constr[$i], 3) = "PWD" Then
                If $password <> "" Then
                    $pwd = $password
                Else
                    $pwd = StringMid($constr[$i], 5)
                EndIf
            EndIf
            If StringLeft($constr[$i], 8) = "DATABASE" Then
                If $database <> "" Then
                    $db = $database
                Else
                    $db = StringMid($constr[$i], 10)
                EndIf
            EndIf
            If StringLeft($constr[$i], 6) = "SERVER" Then
                If $server <> "" Then
                    $svr = $server
                Else
                    $svr = StringMid($constr[$i], 8)
                EndIf
            EndIf
            If StringLeft($constr[$i], 6) = "DRIVER" Then
                If $driver <> "" Then
                    $dvr = $driver
                Else
                    $dvr = "{MySQL ODBC 3.51 DRIVER}"
                EndIf
            EndIf
            If StringLeft($constr[$i], 4) = "PORT" Then
                if $iport <> 0 Then
                    $port = $iport
                Else
                    $port = 3306
                EndIf
            EndIf
        Next
        $oConnectionObj.close
        $oConnectionObj.Open ("DATABASE=" & $db & ";DRIVER=" & $dvr & ";UID=" & $usn & ";PWD=" & $pwd & ";SERVER=" & $svr & ";PORT=" & $port & ";")
        Return $oConnectionObj
    Else
        SetError(1)
        Return -1
    EndIf
EndFunc   ;==>_ChangeCon

Please help! <33

Link to comment
Share on other sites

_CreateTable($oConnectionObj, $sTbl, $sPrimeKey, $keytype = "INTEGER", $sNotNull = "yes", $keyautoinc = "yes", $sType = "InnoDB")

This is not how you may want to call this function, unless you're intentionally submitting boolean values as parameters. It may not be the problem though.

Link to comment
Share on other sites

_CreateTable($oConnectionObj, $sTbl, $sPrimeKey, $keytype = "INTEGER", $sNotNull = "yes", $keyautoinc = "yes", $sType = "InnoDB")

This is not how you may want to call this function, unless you're intentionally submitting boolean values as parameters. It may not be the problem though.

Well it is a problem, since it doesnt create a table in the database :S

Example how I should do?

Link to comment
Share on other sites

What is the underlying data type you're interested in is something you should know. If you want the default parameters values you can call it like this:

_CreateTable($oConnectionObj, $sTbl, $sPrimeKey)

I don't know the other parameter strings but even if it's not exist, the syntax is as follows:

_CreateTable($oConnectionObj, $sTbl, $sPrimeKey, "BOOLEAN")

..to create a boolean type (again I don't know).

By the way, I see you've set $sTbl to $Key, but I've failed to see initialization action in the source. >_<

Edited by Authenticity
Link to comment
Share on other sites

What is the underlying data type you're interested in is something you should know. If you want the default parameters values you can call it like this:

_CreateTable($oConnectionObj, $sTbl, $sPrimeKey)

I don't know the other parameter strings but even if it's not exist, the syntax is as follows:

_CreateTable($oConnectionObj, $sTbl, $sPrimeKey, "BOOLEAN")

..to create a boolean type (again I don't know).

By the way, I see you've set $sTbl to $Key, but I've failed to see initialization action in the source. >_<

$oConnectionObj, Variable used without being declared.

What should I have as $oConnectionObj = ??

Thx for your help :(

Link to comment
Share on other sites

It seems like it's declared:

$oConnectionObj = _MySQLConnect ($UserName, $Password, $Database, $MySQLServerName)

.. this is the line before the line you use the connection object.

Maybe, by cleaning your code or testing this pieces of logic within a new fresh *.au3 file may help you identifying to insulting code.

Link to comment
Share on other sites

OK, still isnt working, here is how the code looks like now,

#include "MYSQL.au3"

$Key = "123456"
Dim $NameList
Dim $UserName = "root"
Dim $Password = "Ksadkal08"
Dim $Database = "damit"
Dim $MySQLServerName = "localhost"
Dim $TableName = "keycheck"
Dim $ColumnNames[3]
Dim $NewGuest[6]
Dim $Column = "Key"
Dim $RecordID = $Key
$sPrimeKey = "Key"
$sTbl = "TESTER"
$keytype = "INTEGER"
$sNotNull = "yes"
$keyautoinc = "yes"
$sType = "InnoDB"
$sDriver = "{MySQL ODBC 3.51 Driver}" 
$iPort=3306

$ColumnNames[0]= "Key"
$ColumnNames[1]= "IP"
$ColumnNames[2]= "Inuse"
$oConnectionObj = _MySQLConnect ($UserName, $Password, $Database, $MySQLServerName)

;GUI

Case $Launch
        _GetIP()
        _MySQLConnect($UserName, $Password, $Database, $MySQLServerName, $sDriver = "{MySQL ODBC 3.51 Driver}", $iPort=3306)
        _CreateTable($oConnectionObj, $sTbl, $sPrimeKey, "BOOLEAN")
        Mysql()



Func Mysql()
$TableName = "keycheck"
$ColumnName3= "Key"
$ColumnName2= "IP"
$ColumnName1 = "Inuse"
$PublicIP = _GetIP()
$Inuse = "2"
$SQLInstance = _MySQLConnect ($UserName, $Password, $Database, $MySQLServerName)
 
DisplayTable()
 
_AddRecord($SQLInstance,$TableName,$ColumnNames,$Key)

_AddRecord($SQLInstance,$TableName,$ColumnNames,$PublicIP)

_AddRecord($SQLInstance,$TableName,$ColumnNames,$Inuse)

MsgBox(4096, "Done", "No file chosen, saving cancelled")
EndFunc

Func _GetIP()
    Local $ip
    If InetGet("http://www.whatismyip.com", @TempDir & "\~ip.tmp") Then
        $ip = FileRead(@TempDir & "\~ip.tmp", FileGetSize(@TempDir & "\~ip.tmp"))
        FileDelete(@TempDir & "\~ip.tmp")
        $ip = StringTrimLeft($ip, StringInStr($ip, "<TITLE>Your ip is ") + 17)
        $ip = StringLeft($ip, StringInStr($ip, " WhatIsMyIP.com</TITLE>") - 1)    
        Return $ip
    Else
        SetError(1)
        Return -1
    EndIf
EndFunc

Func DisplayTable()
    $SQLInstance = _MySQLConnect ($UserName, $Password, $Database, $MySQLServerName)
    $NameList = ""
    $SQLCode = "SELECT * FROM keycheck"
    $TableContents = _Query ($SQLInstance, $SQLCode)
;   With $TableContents
;       While Not .EOF
;           $NameList &= .Fields ("Key").value & " " & .Fields ("IP").value & @CRLF
;           .MoveNext
;       WEnd
;   EndWith
    ;MsgBox(0,"Guest List",$NameList)
EndFunc
Link to comment
Share on other sites

Did you verify that you can successfully connect? Check the error value after you're trying to connect. Read the function description to see what is the success or otherwise, failure condition. Again this is not a function call unless you're intentionally interested in submitting boolean parameters.

_MySQLConnect($UserName, $Password, $Database, $MySQLServerName, $sDriver = "{MySQL ODBC 3.51 Driver}", $iPort=3306)

You don't need to call this function each and every time you wish to connect to the database. Once a connection is established, you can use this object connection until you use _MySQLEnd() or some other side disconnected you from the database.

Link to comment
Share on other sites

Checked that, seems to be that I cant connect to MYSQL,

Func _MySQLConnect($UserName, $Password, $Database, $MySQLServerName, $sDriver = "{MySQL ODBC 3.51 Driver}", $iPort=3306)
    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
        MsgBox(4096, "Done", "ERRORS") ; GETTING THIS MSG BOX TO POPUP, DRIVER
        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)
        MsgBox(4096, "Done", "ERROR")
        Return 0
    Else
        Return $ObjConn
    EndIf
EndFunc   ;==>_MySQLConnect

@Error = 2

MySQL ODBC Driver not installed.

Getting that error that MYSQL ODBC Driver isnt installed, how to make so the function doesnt include the Driver since it said that is opinional.

Thank you for helping me btw >_<

Link to comment
Share on other sites

Even if it's optional, the driver need to be exist in order for the function to success. Go to the function definition, you'll see the key in the registry it's reading to see if the driver is installed. I guess that you probably have "SQL Server" so you can send "{SQL Server}" to the function. The curly brackets are not part of the original value name but are essential to the function because it'll strip them off. For example to connect on my example database >_< I'll specify something like this:

It'll be different for you though.

Global $sUserName = ''
Global $sPassword = ''
Global $sDatabase = 'AutoLot' ; ahem.
Global $sServer = '(local)\SQLEXPRESS'
Global $sDriver = '{SQL Server}'

Global $oSQLCon = _MySQLConnect($sUserName, $sPassword, $sDatabase, $sServer, $sDriver)

If you don't know what to use in the driver, go to this key in the registry and pick the appropriate value name:

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers
Link to comment
Share on other sites

Well, I have 5.1.30, Changed the connection object to,

_MySQLConnect($Username, $Password, $Database, $MySQLServerName, $sDriver = "{MySQL ODBC 5.1.30 Driver}", $iPort=3306)

Tried both

"{MySQL ODBC 5.1.30 Driver}"

&

"{MySQL ODBC 5.1 Driver}"

still same error :S

Link to comment
Share on other sites

Please read carefully heh. This is not how you call a function, definitely. It should be like this:

; For default parameters:
_MySQLConnect($Username, $Password, $Database, $MySQLServerName, "{MySQL ODBC 5.1.30 Driver}")

; For your own parameter, note the port parameter:
_MySQLConnect($Username, $Password, $Database, $MySQLServerName, "{MySQL ODBC 5.1.30 Driver}", 8080)

When you do something like this:

_MySQLConnect($Username, $Password, $Database, $MySQLServerName, $sDriver = "{MySQL ODBC 5.1.30 Driver}", $iPort=3306)

..AutoIt parse this line as, but definitely not close, just to illustrate:

parameter 1 is what $Username contain.
Parameter 2 is what $Password contain.
parameter 3 is what ....
Parameter 4 ....
Test $sDriver against the literal string "{MySQL ODBC 5.1.30 Driver}" and the value is True or False according to the result.

Hope you get the mood >_<

Edited by Authenticity
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...