Ich bin ja immer noch am ausprobieren von AutoIt und habe mich auch schon an Datenbanken rangewagt. Das war aber SQlite und nun möchte ich es gerne mal mit MySQL versuchen. Eine Recherche im Forum hat ergeben, daß man am besten die UDF von progandy nehmen soll. Ok, gemacht und das beiliegende Test-Script funktioniert auch.
Aber ich habe Probleme Daten selber auszugeben, weil ich die ganzen Funktionen und Parameter nicht kenne. Das ist leider nicht dokumentiert, zumindest hab ich nichts gefunden.
So habe ich zwei Fragen: Zum ersten würde ich gerne wissen, wie man einen Datensatz ausgibt. Also 'select...' ohne 'Where'. Meines Wissens, wird dann der letzte Datensatz ausgegeben. Nur wie?
Und zweitens wäre die Frage, wie ich das in einer WHILE-Schleife ausgeben kann. Dann natürlich alle Datensätze oder die mit Where gefilterten.
Ich such mir hier schon die Augen kaputt, aber die meisten Bsp. berufen sich auf die mysql.au3 die nicht von prograndy ist. Aber die geht ja wohl nur über ODBC und wenn man es auch ohne könnte, wäre mir das schon lieber.
Anbei mal noch mein Versuchsscript, was so nicht funkioniert. Eine kleine GUI mit einem Listview, in dem ich die Daten gerne hätte.
#include <array.au3>
#include "MySQL.au3"
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 564, 276, -1, -1)
$Button1 = GUICtrlCreateButton("Button1", 240, 235, 75, 25, $WS_GROUP)
$ListView1 = GUICtrlCreateListView("Name|Vorname", 5, 5, 555, 215, -1, BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES))
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 200)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 200)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
; MYSQL starten, DLL im PATH (enthält auch @ScriptDir), sont Pfad zur DLL angeben. DLL muss libmysql.dll heißen.
_MySQL_InitLibrary()
If @error Then Exit MsgBox(0, '', "")
$MysqlConn = _MySQL_Init()
$connected = _MySQL_Real_Connect($MysqlConn, "localhost", "root", "", "test")
If $connected = 0 Then Exit MsgBox(16, 'Connection Error', _MySQL_Error($MysqlConn))
$query = "SELECT * FROM test"
_MySQL_Real_Query($MysqlConn, $query)
$res = _MySQL_Store_Result($MysqlConn)
$fields = _MySQL_Num_Fields($res)
$rows = _MySQL_Num_Rows($res)
; Zugriff 1
Dim $array[$rows][$fields]
For $k = 1 To $rows
$mysqlrow = _MySQL_Fetch_Row($res,$fields)
$lenthsStruct = _MySQL_Fetch_Lengths($res)
[/autoit][autoit][/autoit][autoit]For $i = 1 To $fields
$length = DllStructGetData($lenthsStruct, 1, $i)
$fieldPtr = DllStructGetData($mysqlrow, 1, $i)
$data = DllStructGetData(DllStructCreate("char[" & $length & "]", $fieldPtr), 1)
$array[$k - 1][$i - 1] = $data
Next
Next
_ArrayDisplay($array)
GUICtrlCreateListViewItem($array[0][1] & "|" & $array[0][2], $ListView1)
[/autoit][autoit][/autoit][autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button1
Exit
EndSwitch
WEnd
Dann noch die kleine DB dazu:
--
-- Tabellenstruktur für Tabelle `test`
--
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`vorname` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Daten für Tabelle `test`
--
INSERT INTO `test` (`id`, `name`, `vorname`) VALUES(1, 'Meier', 'Fitz');
INSERT INTO `test` (`id`, `name`, `vorname`) VALUES(2, 'Schneider', 'Paul');
Alles anzeigen
Bin für jeden Tipp dankbar!