![]() |
Re: MySQL ohne Komponenten
Also mit der mysql_fetch_rows funktion? Und wie bekomme ich da den Variablentyp mit heraus.
Kannst du mir vielleicht ein Beispiel zeigen? |
Re: MySQL ohne Komponenten
Ein Beispiel hab ich nicht, aber die MySQL-Dokumentation:
![]() Ist zwar in C, aber so viel anders als Pascal ist das Codestück nicht. result ist hier das, was du von mysql_use_result bzw. mysql_store_result zurückbekommen hast. |
Re: MySQL ohne Komponenten
Versuche gerade mit dem Befehl "mysql_fetch_fields" zu arbeiten. Nur irgentwie klappt das nicht so ganz. Hoffe du kannst mir da vielleicht weiterhelfen.
Und zwar hab ich ein Record mit 4 Feldern erstellt. Jedes Feld ist als PMySQL_FIELDS deklariert. Wenn ich nun versuche dem record den fetch_fields befehl zuzuordnen bekomm ich den Fehler inkompatible Typen Fields und PMySQL_FIELDS? Wie muss ich die Felder deklarieren, damit das ganze klappt? Hier mein Code: Zitat:
|
Re: MySQL ohne Komponenten
Wieso denn ein Record mit verschiedenen Fields? :shock:
Du kriegst bei mysql_fetch_fields eine Zeiger auf eine MYSQL_FIELDS-Struktur zurück, also eine Variable vom Typ PMYSQL_FIELDS. Dort kannst du dann über die einzelnen Felder iterieren. Wir die Struktur genau ausieht, findest ja in der API-Referenz. |
Re: MySQL ohne Komponenten
Ach....
OK alles Klar, habs verstanden, war mal wieder auf nem völlig falschem Dampfer. |
Re: MySQL ohne Komponenten
Hallo,
find das Tutorial klasse. ;) Hab aber eine Frage. (Ich hab nicht alles durchgelesen, da es doch sehr lang ist. :oops: ) Kann ich, wenn ich mit einer Datenbank verbunden bin, mir alle enthaltenen Tabellen anzeigen lassen? Wenn ja, wie geht das? Danke! MfG freak |
Re: MySQL ohne Komponenten
Zitat:
SQL-Code:
sollte Dir helfen ;-)
SHOW TABLES [FROM db_name]
|
Re: MySQL ohne Komponenten
Ich habs so gemacht:
Delphi-Quellcode:
>.< Mit der SQL-Abfrage komme ich net klar. :(
function TMySQL.GetTableNames: String;
var lResult: PMYSQL_RES; I: Integer; lRow: PMYSQL_ROW; begin Result := ''; lResult := mysql_list_tables(FCon, PChar('')); //ShowMessage('RowCount: ' + IntToStr(lResult.row_count)); for I := 0 to lResult.row_count - 1 do begin lRow := mysql_fetch_row(lResult); Result := Result + ',' + lRow[0]; end; Delete(Result, 1, 1); end; MfG freak |
Re: MySQL ohne Komponenten
Zitat:
Also wenn du schon mit dem SHOW TABLES Probleme hast, würde ich dir dringendst anraten, dich mit SQL vertraut zu machen, bevor du programmatisch mit einer Datenbank kommunizieren willst. |
Re: MySQL ohne Komponenten
Moin,
hab mir gestern auch mal diese Unit runtergeladen und bin mehr oder weniger damit zufrieden, abgesehn das es kein mysql_fetch_assoc gibt. Aber ich hab 'ne Frage, wie kann ich rausfinden ob ein Feld einer Abfrage NULL ist? Bei einer Abfrage werden diese ja automatisch in ein leeren String umgewandelt. MfG BaedDog |
Re: MySQL ohne Komponenten
Zitat:
MfG freak |
Re: MySQL ohne Komponenten
Zitat:
![]() |
Re: MySQL ohne Komponenten
Zitat:
|
Re: MySQL ohne Komponenten
Bei mir funzt es mit der Connection wirklich n1 Super TUT jedoch kommt bei der zweiten Verbindung immer ein Fehler dass in der libmySQL.dll zugriffsverletzungen seien.
Und das insert into geht nit, Zahlen gehen aber variablen oder strings nicht:
Delphi-Quellcode:
Das funkt einfach nicht kommt auch keine Fehlermeldung oder so
var
var1, var2: string; ... var1 := 'Name'; var2 := 'TestText :D'; ... query := 'INSERT INTO delphi (name, text) VALUES (var1, var2)'; mysql_real_query(_myCon, query, Length(query)); Jedoch so funkt es:
Delphi-Quellcode:
Dann wird die 1 und die 2 eingetragen! Komisch oder??^^ Weiß jemand eine Antwort, thx im Vorraus :D
query := 'INSERT INTO delphi (name, text) VALUES (1, 2)';
mysql_real_query(_myCon, query, Length(query)); |
Re: MySQL ohne Komponenten
Delphi-Quellcode:
query := 'INSERT INTO delphi (name, text) VALUES ('+QuotedStr(var1)+', '+QuotedStr( var2)'+ ');';
|
Re: MySQL ohne Komponenten
Ok erstmal danke (mkinzler du bist ja echt wirklich sehr aktiv :D)
Jedoch sagt BDES dann im Debug modus <<[Pascal Fehler] Unit1.pas(82): E2010 Inkompatible Typen: 'string' und 'PAnsiChar'>> Liegt es vtl. daran dass die vars strings sind? Ind er DB sind die 2 spalten als "text" markiert. |
Re: MySQL ohne Komponenten
Zitat:
Versuch mal:
Delphi-Quellcode:
mysql_real_query(_myCon, PChar(query), Length(query));
|
Re: MySQL ohne Komponenten
Zitat:
hab auch mal folgendes versucht:
Delphi-Quellcode:
Dort kommt jedoch der gleiche Fehler wie bei deinem query (QuotedStr...).
query := 'INSERT INTO delphi (name, text) VALUES ('+var1+', '+var2+')';
Hab auch schon versucht die vars als PChar zu setzen, jedoch ohne Erfolg :( Aber so was muss ja möglich sein!! :wall: |
Re: MySQL ohne Komponenten
Delphi-Quellcode:
query := 'INSERT INTO delphi (name, text) VALUES ('+PCahr(QuotedStr(var1))+', '+PChar(QuotedStr( var2))'+ ');';
|
Re: MySQL ohne Komponenten
Hmm geht leider immer noch nicht sagt immer noch den gleichen Fehler dass es inkompatibel mit Pchar oder string sei!
|
Re: MySQL ohne Komponenten
Hi,
ich will mich mal etwas mit diesem Tutorial befassen, aber leider habe ich bereits am Anfang ein Problem, jedes mal wenn ich versuche die Verbindung herzustellen, kriege ich diese Meldung Zitat:
Hat evtl. jemand einen Tipp für mich? Mein Code:
Delphi-Quellcode:
Gruß
unit Unit11;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit12; type TForm11 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form11: TForm11; implementation {$R *.dfm} procedure TForm11.Button1Click(Sender: TObject); var _myCon: PMySQL; //unseren Verbindungsdeskriptor host, user, pass, db: PChar; //die Anmeldedaten begin //wir werden uns als Root-Benutzer in localhost einloggen, ohne eine //bestimmte Datenbank auszuwählen host := 'localhost'; user := 'root'; pass := nil; db := nil; //jetzt wird _myCon initialisiert _myCon := mysql_init(nil); if _myCon = nil then begin ShowMessage('Nicht genug freier Speicher, um Verbindungsdeskriptor zu initialisieren'); Exit; end; //anschließend wird die Verbindung hergestellt if mysql_real_connect(_myCon, host, user, pass, db, 3306, nil, 0) = nil then begin ShowMessage('Die Verbindung konnte nicht hergestellt werden. Ursache: ' + mysql_error(_myCon)); Exit; end; ShowMessage('Verbindung hergestellt'); //zum Schluss wird die Verbindung wieder geschlossen mysql_close(_myCon); end; end. Chris |
Re: MySQL ohne Komponenten
Hallo Chris,
die Fehlermeldung sagt dir doch genau, was du tun musst: Zitat:
|
Re: MySQL ohne Komponenten
HI!
Ich habe statt host = 'localhost' ma meine Netzwerk-IP Adresse eingegeben und dann kommt eine Fehlermeldung: Host 'Computername' is not allowed to connect to the Mysql Server. Hm ?! Was muss ich machen? Schließlich soll das programm ja auch funktionieren, wenn ich einen Mysql-Server übers Internet ansteuern möchte ! thx für antworten! |
Re: MySQL ohne Komponenten
Zitat:
Falls du MySQL bei irgendeinen Webhoster hast und keinen direkten Adminzugang für User-Konfiguration hast könnte es sein das dein Hoster das aufgrund von Sicherheitsaspekten nicht erlaubt bzw. entsprechend konfiguriert. |
Re: MySQL ohne Komponenten
mir ist durchaus bewusst was diese fehlermeldung sagt! Aber ich finde nix in der DB (teste es über xampp) wo ich das einstellen könnte! Da ich mich via root-User einlogge hat dieser alle Rechte !
|
Re: MySQL ohne Komponenten
Besorg dir mal ein Administrationstool (z.B. phpMyAdmin) und sieh dir dort die Benutzer an, insbesondere die Hosts, von denen sie zugreifen dürfen.
|
Re: MySQL ohne Komponenten
Ja phpmyadmin is dabei ! Hab die funktion jetzt auch gefunden !thx nochmal!
Jetzt habe ich noch eine Frage! Habe n mysql server bei server4you, wie kann ich jetzt auf diesen zugreifen ? muss ich da was besonderes beachten ? |
Re: MySQL ohne Komponenten
Hey Leute hab immernoch das große problem dass ich keine Variablen per mySQL inserten kann.
Delphi-Quellcode:
So wenn ich nun vor und nach den vars nach VALUES jeweils ein " setze, wird in die DB var1 und var2 als text eingetragen, jedoch will ich den inhalt dieser Variablen aber dass geht nicht da dass query mit den einzelnen kleinen anführungszeichen gestartet und beendet wird, kann man nicht irgendwie z.B. einen Schrägsrich davor machen (\') oder gibt es eine andere methode einen String mit Text zu füllen ohne die einfachen ("'") anführunsstrichchen zu benutzen?
var1 := 'testname';
var2 := 'testeintrag'; query := 'INSERT INTO delphi (name, text) VALUES (var1, var2)'; mysql_real_query(_myCon, PChar(query), Length(query)); |
Re: MySQL ohne Komponenten
Vielleicht so?
Delphi-Quellcode:
var1 := 'testname'; var2 := 'testeintrag'; query := 'INSERT INTO delphi (name, text) VALUES ('+var1+','+ var2+')'; mysql_real_query(_myCon, PChar(query), Length(query)); |
Re: MySQL ohne Komponenten
Hi,
lange ist's her, nun hab ich endlich mal wieder mehr Zeit für Delphi und leider auch gleich ein Problem, es geht im Prinzip immer noch um das Problem von weiter oben, ich finde irgendwie keine libMySQL die mit meinem Server funktionert, ich habe einen Suse 9.3 Server mit MySQL 4.1.10a, hat evtl. jemand einen Link wo ich die .dll downloaden kann?... Gruß Chris |
Re: MySQL ohne Komponenten
Die DLL ist beim Server dabei.
|
Re: MySQL ohne Komponenten
...kann ich mit dieser Methode (ohne Komponente) auch prepared procedures verwenden?
Wenn ja, wie? |
Re: MySQL ohne Komponenten
Ich kann mit dem Begriff "Prepared procedures" zwar nix anfangen, gehe aber mal davon aus, dass du das meinst, was ich unter "Stored procedures" verstehe. Und die müssten sich über mysql_query bzw. mysql_real_query genauso ausführen lassen wie jede andere SQL-Abfrage.
|
Re: MySQL ohne Komponenten
ja, ich meine natürlich "Stored Procedures".
Allerdings weiß ich nicht ob es möglich ist, "Prepared Statements" auszuführen. Das war eigentlich meine Frage. |
Re: MySQL ohne Komponenten
Der Einsatz von Prepared Statements scheint laut Handbuch möglich, ich habs allerdings nie ausprobiert. Folgender Link sollte dir weiterhelfen:
![]() |
Re: MySQL ohne Komponenten
Sämtliche Funktionen die "stmt" beinhalten (z.B. mysql_stmt_init, mysql_stmt_execute,...) sind in der mysql.pas nicht enthalten. Das läßt womöglich darauf schließen, dass es mit der mysql.pas nicht funktioniert, Prepared Statements zu nutzen.
Ich habe leider "nur" Delphi2005 PE und dort ist der Einsatz der ZEOS-Komponente nicht möglich. Wie kann ich trotzdem mit prepared Statements arbeiten??? |
Re: MySQL ohne Komponenten
Die verlinkte mysql.pas basiert auf der Schnittstelle der 3.x-Versionen. Vielleicht findest du irgendwo eine aktuellere Version der Header-Übersetungen (war hier nicht mal im Forum was dazu?), ansonsten müsstest du die fehlenden Konstrukte und Funktionen aus den C-Headern selbst übersetzen.
|
Re: MySQL ohne Komponenten
Moin Moin!
Cooles Tut!! Aber leider kommt bei mir die Fehlermeldung: "Access violation at adress 10006C36 in module 'libmysql.dll'. Read of adress 00000014"! Was heißt das? habe gestern erst die neuste version von der dll gezogen!!! Kann mir jemdand helfen? |
Re: MySQL ohne Komponenten
Zitat:
|
Re: MySQL ohne Komponenten
Hae das mal an einer älteren SQL version getestet! geht! Danke! hatte xampp die neuste version drauf !! Danke für den tipp
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz