Arbeiten mit Mysql
Arbeiten mit Mysql
Hallo, ich suche jetzt schon seit tagen eine einigermaßen aktuelle beschreibung zur verwendung von Mysql.
Alles was ich gefunden habe ist ziemlich alt und funtioniert so nicht mehr.
Kann mir jemand behilflich sein, wie ich Mysql verwende ohne ODBC, da die software bei einigen meiner Kollegen zum einsatz kommt.
Danke schon mal im voraus
Gruß Rene
Alles was ich gefunden habe ist ziemlich alt und funtioniert so nicht mehr.
Kann mir jemand behilflich sein, wie ich Mysql verwende ohne ODBC, da die software bei einigen meiner Kollegen zum einsatz kommt.
Danke schon mal im voraus
Gruß Rene
Re: Arbeiten mit Mysql
HeX0r hat im englischen Forum ein sehr interessantes Include vorgestellt, das die libmysql.dll benutzt
und dabei die Syntax von den PB eigenen Befehlen unterstützt.
Funktioniert bei mir unter Windows x86 und x64 sowohl im Ascii als auch im Unicode Kompilat.
(Wobei man aufpassen sollte, auch die richtige dll zu benutzen
)
Link : http://purebasic.fr/english/viewtopic.p ... 28#p423628
und dabei die Syntax von den PB eigenen Befehlen unterstützt.
Funktioniert bei mir unter Windows x86 und x64 sowohl im Ascii als auch im Unicode Kompilat.
(Wobei man aufpassen sollte, auch die richtige dll zu benutzen

Link : http://purebasic.fr/english/viewtopic.p ... 28#p423628
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Re: Arbeiten mit Mysql
danke dir,
gibt es da irgend ein howto dazu?
habe zur zeit alles auf SQLite und will das umbauen auf Mysql
vor allem wo bekomme ich die richtige DLL
Gruß Rene
gibt es da irgend ein howto dazu?
habe zur zeit alles auf SQLite und will das umbauen auf Mysql
vor allem wo bekomme ich die richtige DLL
Gruß Rene
Re: Arbeiten mit Mysql
die Dll's befinden sich in den MySQL Connector Zips, die man hier bekommen kann.
Ein HowTo... eigentlich nicht, da es die gleichen Befehle nutzt wie PB.
Nur Blobs werden momentan nicht unterstützt.
SQLite und MySql benutzen beinahe die gleiche Syntax für die "Queries", im Grunde muss man dazu
dann nicht wirklich was umstellen.
Ausser vielleicht, aus DataBaseUpdate() ein DatabaseQuery() machen...
Dieses Beispiel hier um die Standard Datenbank von xampp anzusprechen/auszulesen...
Ein HowTo... eigentlich nicht, da es die gleichen Befehle nutzt wie PB.
Nur Blobs werden momentan nicht unterstützt.
SQLite und MySql benutzen beinahe die gleiche Syntax für die "Queries", im Grunde muss man dazu
dann nicht wirklich was umstellen.
Ausser vielleicht, aus DataBaseUpdate() ein DatabaseQuery() machen...
Dieses Beispiel hier um die Standard Datenbank von xampp anzusprechen/auszulesen...
Code: Alles auswählen
User.s = "root"
Pass.s = "password"
XIncludeFile "MySQL.pbi"
UseMySQLDataBase()
db = OpenDatabase(#PB_Any, "host=localhost dbname=cdcol", User, Pass, #PB_Database_MySQL)
If db
a = DatabaseQuery(DB, "SELECT * FROM `cds`")
If a
While NextDatabaseRow(db)
Debug GetDatabaseString(db,0)
Debug GetDatabaseString(db,1)
Debug GetDatabaseLong(db,2)
Debug GetDatabaseLong(db,3)
Wend
EndIf
CloseDatabase(db)
EndIf
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Re: Arbeiten mit Mysql
Danke dir, klappr wunderbar, bis auf
DatabaseQuery(#DatenDB, "SELECT last_insert_rowid()")
Das eintragen funtioniert einwandfrei
Gruß Rene
DatabaseQuery(#DatenDB, "SELECT last_insert_rowid()")
Das eintragen funtioniert einwandfrei
Gruß Rene
Re: Arbeiten mit Mysql
last_insert_rowid() ist eine SQLite-spezifische Funktion und ist in MySQL nicht vorhanden-
Hierfür könntest Du alternativ sowas wie "Select Max(DeineID) From DeineTabelle" verwenden.
Google weiß da sicherlich mehr...
Grüße ... Kiffi
Hierfür könntest Du alternativ sowas wie "Select Max(DeineID) From DeineTabelle" verwenden.
Google weiß da sicherlich mehr...
Grüße ... Kiffi
a²+b²=mc²
Re: Arbeiten mit Mysql
das sieht aus wie 'ne angeflanschte Prozedur oder Funktion ¿?
Rowid gibt es in Mysql so erstmal nicht.
Eine MySQL-Tabelle mit einem Index (autoincrementiert) auf einer IntegerSpalte
wäre sowas ähnliches, wenn auch nicht ganz dasselbe.
Was du suchst ist die Anzahl der Einträge in einer Tabelle?
--
Kiffi hat sich vorgedrängelt
Rowid gibt es in Mysql so erstmal nicht.
Eine MySQL-Tabelle mit einem Index (autoincrementiert) auf einer IntegerSpalte
wäre sowas ähnliches, wenn auch nicht ganz dasselbe.
Was du suchst ist die Anzahl der Einträge in einer Tabelle?
Code: Alles auswählen
Select count(*) from tabelle
Kiffi hat sich vorgedrängelt

pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
-
- Beiträge: 37
- Registriert: 08.11.2009 09:12
Re: Arbeiten mit Mysql
Bei MySQL lautet die gesuchte Abfrage
Nachtrag:
Die Abfrage kann man auch direkt in Transaktionen verbauen - ideal wenn man 1:n-Relationen erzeugen will:
Tabelle1: ID (int, auto, Primarykey) | Daten (varchar)
Tabelle2: ID (int, auto, Primarykey) | Tabelle1_ID (int, Index) | Daten (varchar)
Relation: Tabelle1.ID - Tabelle2.Tabelle1_ID
Code: Alles auswählen
SELECT LAST_INSERT_ID();
Die Abfrage kann man auch direkt in Transaktionen verbauen - ideal wenn man 1:n-Relationen erzeugen will:
Tabelle1: ID (int, auto, Primarykey) | Daten (varchar)
Tabelle2: ID (int, auto, Primarykey) | Tabelle1_ID (int, Index) | Daten (varchar)
Relation: Tabelle1.ID - Tabelle2.Tabelle1_ID
Code: Alles auswählen
START TRANSACTION;
INSERT INTO Tabelle1(Daten) VALUES ("Bla");
SELECT @id:=LAST_INSERT_ID();
INSERT INTO Tabelle2(Tabelle1_ID,Daten) VALUES (@id,"Blabla");
INSERT INTO Tabelle2(Tabelle1_ID,Daten) VALUES (@id,"Blablablubb");
INSERT INTO Tabelle2(Tabelle1_ID,Daten) VALUES (@id,"La-li-lu");
...
...
...
COMMIT;
Re: Arbeiten mit Mysql
folgendes dazu noch aus der MySQL-Doku
vom SQLite (RowID wie n SQLite gibt es bei MySQL nicht)
Geht also auch "nur" mit einer autoinkrementierten Spalte und ist somit eben NICHT identisch mit dem last_insert_rowid()LAST_INSERT_ID(), LAST_INSERT_ID(expr)
Gibt den ersten automatisch erzeugten Wert zurück, der für eine AUTO_INCREMENT-Spalte durch die aktuelle INSERT- oder UPDATE-Anweisung eingestellt wurde, die eine solche Spalte modifiziert hat.
mysql> SELECT LAST_INSERT_ID();
-> 195
Die erzeugte Kennung wird auf dem Server verbindungsspezifisch gehandhabt: Der von der Funktion an einen bestimmten Client zurückgegebene Wert ist der erste AUTO_INCREMENT-Wert, der für die zuletzt abgesetzte Anweisung, die eine AUTO_INCREMENT-Spalte betraf, von diesem Client erzeugt wurde. Dieser Wert darf nicht von anderen Clients bearbeitet werden, auch wenn diese selbst AUTO_INCREMENT-Werte erzeugen. Dieses Verhalten gewährleistet, dass jeder Client seine eigene Kennung abrufen kann, ohne die Aktivitäten anderer Clients berücksichtigen oder Sperren setzen bzw. Transaktionen verwenden zu müssen.
Der Wert von LAST_INSERT_ID() wird nicht geändert, wenn Sie die AUTO_INCREMENT-Spalte eines Datensatzes auf einen „nichtmagischen“ Wert (d. h. einen Wert, der nicht NULL und nicht 0 ist) setzen.
Wichtig: Wenn Sie mehrere Datensätze mithilfe einer einzelnen INSERT-Anweisung einfügen, gibt LAST_INSERT_ID() nur denjenigen Wert zurück, der für den ersten eingefügten Datensatz erzeugt wurde. Grund hierfür ist, dass es möglich sein soll, dieselbe INSERT-Anweisung problemlos auf einem anderen Server zu reproduzieren.
..
...
lull und lall
vom SQLite (RowID wie n SQLite gibt es bei MySQL nicht)
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Re: Arbeiten mit Mysql
ok, das ganze ahbe ich anders gelöst.
nun aber noch ein größeres Problem....
wenn ich das programm starten will, schlägt mein Virenscanner alarm, kann das an der libmysql.dll liegen?
nun aber noch ein größeres Problem....
wenn ich das programm starten will, schlägt mein Virenscanner alarm, kann das an der libmysql.dll liegen?