MySQL Datenbank mit borland nutzen
-
Hallo zusammen und schon mal danke an die Helfer

Ich würde gerne eine MySQL DB (Xampp) an mein Programm anbinden. als IDE benutzte ich BCB Pro. 6.
Nun habe ich hier im forum z.B. nach ADO gesucht, jedoch gibt es nur Problem spezifische threads (zumindest habe ich nur solche gefunden. Da ich noch nie mit einer Datenbank und c++ gearbeitet habe braüchte ich eine art tutorial in dem alles erklärt wird. Zum beispiel wie ich auf eine MySQL datenbank mit ado connecte wie der string aussehen muss usw. wenn mir jemand helfen könnte wäre ich dankbar.
ps.: ich bin nicht auf dieses ADO versteift, wenn ihr mir mit einer anderen komponente helfen könnt wäre ich dankbar.
thx
Pierre
-
Hallo
ich greife auf mySql mittels der Zeos-Komponente zu
(ist sehr einfach aehnlich wie BDE - der Zugriff natuerlich nur)MfG
Klaus
-
Hallo,
wenn du umbedingt über ADO auf deine MySQL Datenbank zugreifen willst, dann musst du vorher MyODBC installieren und eine neue Verbindung zu MySQL-Server herstellen.
(Systemsteuerung->Verwaltung->Datenquellen(ODBC))
Dann brauchst du einmal die Komponente TADOConnection.
Connection-String -> Aufbauen
Provider: Microsoft OLE DB Provider for ODBC Drivers
Verbindung:
1.Datenquellenname: Dein gewählter Verbindungsname
2.Benutzername und Kennwort
3.Deine Datenbank auswählen.Dann nimmst du z.B. eine TADOQuery Komponente und stellst dort die Connection auf deine Instanz von TADOConnection.
Weiteres über die Verwendung von TADOQuery und TADOTable findest du in der Hilfe.
-
ps.: Ich verwende für den direkten Zugriff die MySQLDAC Komponenten.
-
Also ich habe mir eine Klasse geschrieben, die alle Sachen mit MySql regelt. Die Umsetzung geschieht über die MySql-C-Api. Bis jetzt bin ich damit immer gut gefahren.
Warum ich die MySql-C++-Api nicht genommen habe, daran kann ich mich nicht mehr erinnern. Wahrscheinlich hatte ich irgend welche Probleme.
-
Hallo nochmal und danke für die Hilfe.
ich habe nun eine Verbindung zu meiner datenbank, doch leider versteh ich nicht ganz die Hilfe von ADOQuerry. Wie genau kann ich den jetzt z.B. einen Insert in die DB machen
"Insert into db where bla = x value etc..."
wo trage ich solch einen befehl ein? er soll diesen insert machen wenn ich auf den Button registrieren klicke
danke jungx
-
Hallo
dazu brauchst du die Klasse TADOQuery, in derren Eigenschaft SQL wird der Befehl eingetragen und mit der Methode ExecSQL() ausgeführt.
bis bald
akari
-
ich habs so versucht
void __fastcall TfrmRegistrieren::btnRegistrierenClick(TObject *Sender) { AnsiString insertit; insertit = "INSERT into register (name) VALUES ('lbledName')"; ADOQuery_reg->SQL->Close(); ADOQuery_reg->SQL->Add(insertit); ADOQuery_reg->SQL->Open(); }aber da bekomm ich eine fehler meldung nachd der anderen
-
Hallo
ändere mal das
[cpp]
void __fastcall TfrmRegistrieren::btnRegistrierenClick(TObject *Sender)
{
AnsiString insertit;
insertit = "INSERT into register (name) VALUES ('lbledName')";
ADOQuery_reg->SQL->Close();
ADOQuery_reg->SQL->Clear();
ADOQuery_reg->SQL->Add(insertit);
ADOQuery_reg->SQL->ExecSQL(); // Es wird keine Abfrage durchgeführt, sondern ein Befehl ohne Rückgabe
}[/cpp]
kommen jetzt immer noch Fehler?bis bald
akari
-
hallo und danke für die Hilfe.
ja er gibt mir immernoch fehler aus
Close ist kein Elmement von TString
ExecSQL() ist kein Element von TStringmuss ich noch eine bestimmte Datei includen?
-
Die Fehlermeldung ist doch wohl eindeutig...
ADOQuery_reg->ExecSQL();
-
Hallo
sorry, da hab ich nicht aufgepasst. Das muß heißen :
ADOQuery_reg->ExecSQL();Ich hoffe nun mal, das bei ADO das immer noch so heißt...
/Edit : viel zu spät...
bis bald
akari
-
ja das war mir aufgefallen, doch leider bekomm ich den fehler immernoch, muss ich nicht ne h datei einbinden
-
Welchen Fehler bekommst Du noch?
-
hmmm habs zum laufen bekommen. Er sagte mir "clear ist keine Element von TString"
hab Clear mal auskommentiert.
naja beim klick auf den butten bricht er wegen
Im Projekt xxxx ist eine Exception der Klasse yyyyy aufgetreten. Meldung:
'zzzzzz'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Startab (so stehts in der hilfe)
nun ja, kann mir einer sagen wie mien befehl aussehen muss? vielleicht ist der ja nicht richtig.
insertit = "INSERT into register (name,vorname) VALUES ('lbledName','lbledVorname')";
-
die Platzhalter wären die interessanten Infos gewesen...
void __fastcall TfrmRegistrieren::btnRegistrierenClick(TObject *Sender) { AnsiString insertit; insertit = "INSERT into register (name) VALUES (" + QuotedStr(lbledName) + ")"; ADOQuery_reg->Close(); AODQuery_reg->SQL->Clear(); ADOQuery_reg->SQL->Add(insertit); ADOQuery_reg->ExecSQL(); }
-
Hallo,
sry das ich mich erst wieder melde, aber ich war im kurzurlaub.
Also leider schaffe ich es immer noch nicht irgendwas in meine SQL DB zu schreiben.
derzeitig habe ich folgenden Code:
void __fastcall TfrmRegistrieren::btnRegistrierenClick(TObject *Sender) { AnsiString insertit; insertit = "INSERT into register (name) VALUES (" + QuotedStr (lbledName) + ")"; ADOQuery_reg->Close(); //ADOQuery_reg->Clear(); ADOQuery_reg->SQL->Add(insertit); ADOQuery_reg->ExecSQL(); }Dazu kommen dann folgende Fehlermeldungen:
[C++ Fehler] fromRegistrieren.cpp(76): E2034 Konvertierung von 'TLabeledEdit *' nach 'AnsiString' nicht möglich
[C++ Fehler] fromRegistrieren.cpp(76): E2342 Keine Übereinstimmung des Typs beim Parameter 'S' ('const AnsiString' erwartet, 'TLabeledEdit *' erhalten)
naja ich bin halt am rumprobieren und versuche mit der hilfe klar zukommen, aber ich finde nicht die korrekte sysntax um einfach mal etwas in meineDB einzutragen.
Danke an die helfer
-
[cpp]insertit = "INSERT into register (name) VALUES (" + QuotedStr (lbledName->Text) + ")";[/cpp]
-
liess in der hilfe mal nach was
QuotedStr()für parameter braucht
-
erst mal danke, soweit funtzt es nun. Jedoch habe ich noch ein letztes Problem und dann seit ihr mich los

Ich bekomme beim Klick auf den "registrieren" button (damit er den insert ausführt) folgende Meldung
Im Projekt meinProgramm.exe ist eine Exception der Klasse EOleExeption aufgetreten. Meldung:
'Schwerwiegender Fehler'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start
fortsetzen