fb:porticula NoPaste
mysqldingens
Uploader: | darksider3 |
Datum/Zeit: | 09.10.2011 14:20:27 |
'Beispiel-Code von FreeBASIC-Portal.de
'Quelle: http://www.freebasic-portal.de/porticula/mysql-freebasic-kleines-beispiel-817.html
'Getestet mit FreeBASIC 0.23.0 fuer Windows
#include once "mysql\mysql.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
Dim Shared As String MySQLHost, MySQLUser, MySQLPW, MySQLDB
Input "Host (z.B. 127.0.0.1): ", MySQLHost
Input "User (z.B. root): ", MySQLUser
Input "Passwort (Klartext!): ", MySQLPW
Input "Datenbankschema: ", MYSQLDB
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
End 0
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 1
end if
ServerInfo = *mysql_get_server_info( db )
DIM as string query="CREATE TABLE testtab ( username varchar(33) NOT NULL primary key, alter varchar(330) not null"
mysql_real_query(db,STRPTR(query),LEN(query))
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