Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

MySQL und FreeBASIC - Kleines Beispiel

Uploader:AdministratorSebastian
Datum/Zeit:28.02.2009 15:26:11

#include once "mysql\mysql.bi"
#include once "windows.bi"
#include once "vbcompat.bi"
#define NULL 0

DECLARE FUNCTION ZeigAktuelleTabelle () AS INTEGER
DECLARE FUNCTION MySQLInfo () As String
DECLARE FUNCTION MySQLInsert (ByVal A As String, ByVal B As Integer) As Integer

CONST MySQLHost = <MySQLServer>
CONST MySQLUser = <Benutzername>
CONST MySQLPW = <Passwort>
CONST MySQLDB = <Datenbank>

Dim As String ServerInfo = MySQLInfo(), u
Dim As Integer ausw, result, a

DO
    'Oberfläche
    CLS
    PRINT: PRINT "  MYSQL-Beispiel fuer FreeBASIC": PRINT
    PRINT "  Serverinfo: "; ServerInfo
    PRINT
    PRINT "  (1) Tabelle anzeigen"
    PRINT "  (2) Datensatz einfuegen"
    PRINT "  (0) Beenden"
    PRINT
    DO: LOOP WHILE INKEY <> ""
    INPUT "  Auswahl: ", ausw
    Select Case ausw
    Case 0: End
    Case 1
        If ZeigAktuelleTabelle() < 0 Then
            PRINT "  Fehler."
            Sleep: End
        End If
    Case 2
        PRINT
        INPUT "  Benutzername: ", u
        INPUT "  Alter:        ", a
        PRINT
        result = MySQLInsert(u,a)
        If result < 1 Then
            PRINT "  Fehler " & result
        ELSE
            PRINT "  Neuer Datensatz: " & result
        END IF
        SLEEP
    Case Else
        Beep
    End Select
LOOP



FUNCTION MySQLInfo () As String
    'Verbindung zum MySQL Server herstellen und Informationen zur
    'Serversoftware abfragen - Zweck: Test, ob die Verbindung so
    'funktioniert, wie sie funktionieren soll.
    dim db as MYSQL ptr
    Dim ServerInfo As String
    db = mysql_init( NULL )
    if( mysql_real_connect( db, MySQLHost, MySQLUser, MySQLPW, NULL, MYSQL_PORT, NULL, 0 ) = 0 ) then
        print "Es konnte keine Verbindung zum MySQL-Server hergestellt werden."
        mysql_close( db )
        SLEEP
        end
    end if
    ServerInfo =  *mysql_get_server_info( db )
    Mysql_close(db)
    Return ServerInfo
END FUNCTION

FUNCTION MySQLInsert (ByVal A As String, ByVal B As Integer) As Integer
    dim db as MYSQL ptr
    Dim Query As String
    Dim ID As Integer
    Dim result As Integer
    Dim Fehler as ZString Ptr
    db = mysql_init( NULL )
    if mysql_real_connect( db, MySQLHost, MySQLUser, MySQLPW, NULL, MYSQL_PORT, NULL, 0 ) = 0  then Return -1
    if mysql_select_db( db, MySQLDB ) then Return -2
    'Achtung: Die Werte, die im Folgenden eingefügt werden, müssten aus Sicherheitsgründen
    'noch "escapet" werden. Darauf ist in diesem Fall der Einfachheit halber verzichtet
    'worden. Im "Echteinsatz" muss das aber sein.
    query = "INSERT INTO testtab (`username`,`alter`,`zeit`) VALUES (" & chr(34) & A & chr(34) & "," & chr(34) & B & chr(34) & ",CURRENT_TIMESTAMP())"
    result = mysql_real_query (db,STRPTR(query),LEN(query))
    If result = 0 THEN
        ID = mysql_insert_id(db)
        mysql_close(db)
        Return ID
    ELSE
        Fehler = mysql_error(db)
        If (*Fehler)[0] <> 0 Then
            PRINT "  "; *mysql_error(db)
        END IF
        mysql_close(db)
        Return -3
    END IF
END FUNCTION

FUNCTION ZeigAktuelleTabelle () AS INTEGER
    dim db as MYSQL ptr
    dim row as MYSQL_ROW
    dim res as MYSQL_RES ptr
    Dim As String Query
    Dim As Integer i
    db = mysql_init( NULL )
    if (mysql_real_connect( db, MySQLHost, MySQLUser, MySQLPW, NULL, MYSQL_PORT, NULL, 0 ) = 0) then Return -1
    if (mysql_select_db( db, MySQLDB )) then Return -2
    query = "SELECT * FROM testtab ORDER BY id ASC"
    If mysql_real_query (db,STRPTR(query),LEN(query)) <> 0 THEN
        mysql_close(db)
        Return -3
    END IF
    res = mysql_use_result(db)

    CLS
    PRINT: PRINT "  Vorhandene Datensaetze:": PRINT
    PRINT "  ID   | Benutzername  | Alter | Erfassungszeitpunkt"
    PRINT "  --------------------------------------------------"

    Do
        row = mysql_fetch_row( res )
        if( row = NULL ) then
            Exit Do
        ELSE
            PRINT USING "  #### | \           \ |  ###  | &"; Val(*row[0]), *row[1], Val(*row[2]), *row[3]
        END IF
    LOOP
    mysql_close(db)

    SLEEP
    RETURN 0
END FUNCTION