AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi MySQL ohne Komponenten
Tutorial durchsuchen
Ansicht
Themen-Optionen

MySQL ohne Komponenten

Ein Tutorial von Chewie · begonnen am 14. Jul 2003 · letzter Beitrag vom 30. Mär 2020
Antwort Antwort
Seite 13 von 34   « Erste     3111213 141523     Letzte »    
Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
197 Beiträge
 
Delphi XE8 Enterprise
 
#1

Re: MySQL ohne Komponenten

  Alt 31. Jan 2006, 09:05
Hi!

Wollte nur mal fragen, gibt es so etwas auch für Firebird bzw. würde sich dies darauf anwenden lassen?

Gruß
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: MySQL ohne Komponenten

  Alt 31. Jan 2006, 13:38
Das ist die API für MySQl. Andere Datenbanken besitzen andere APIs.
U.a. aus diesem Grund gibt es Abstraktions-Layer
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Chiara87

Registriert seit: 9. Mai 2006
Ort: Heilbronn
4 Beiträge
 
#3

Re: MySQL ohne Komponenten

  Alt 10. Mai 2006, 15:26
Hallo
Ich habe eine Problem.
Ich habe die Unit mysql.pas heruntergeladen und alles gemacht was im Tutorials stand aber wenn ich die Unit compiliere bringt folgende fehler:
Undefinierter Bezeichner: longword, pLongword und Int64.
liegt es daran an das ich Delphi 3 benutze.
Bitte um eine Antwort
By chiara
  Mit Zitat antworten Zitat
Chiara87

Registriert seit: 9. Mai 2006
Ort: Heilbronn
4 Beiträge
 
#4

Re: MySQL ohne Komponenten

  Alt 10. Mai 2006, 16:01
Problem gelöst?
er war wie ich es vermuten habe.
ich hab mit delphi7 probiert und läuft wunderbar.
By chiara
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: MySQL ohne Komponenten

  Alt 30. Jul 2006, 18:44
also ich habe mir jetzt nicht alle 9 seiten durchlesen aber ich habe einee frage zu deine tutorial:
ich habe nun folgenden qullcode:
Delphi-Quellcode:
procedure MakeTables(_myCon: PMySQL);
var
  query: PChar;
begin
  mysql_select_db(_myCon, 'APITest'); //zu Datenbank "APITest" wechseln
  query:='CREATE TABLE posts(id int, author int, date datetime, entry text)';
  mysql_real_query(_myCon, 'CREATE TABLE posts(id int, author int, date datetime, entry text)', Length(query));
  query:='CREATE TABLE users(id int, name varchar(50), pass varchar(50))';

  mysql_real_query(_myCon, 'CREATE TABLE users(id int, name varchar(50), pass varchar(50))', Length(query));
end;

procedure CreateDB;
var
  Posts: TPostEntries;
  _myCon: PMySQL; //unseren Verbindungsdeskriptor
  host, user, pass, db: PChar; //die Anmeldedaten
  query: PChar;
  _myRes: PMySQL_Res; //hier wird der gesamte Ergebnissatz gespeichert
  _mySubRes: PMySQL_Res; //benötigt, um Autor zu ermmitteln
  _myRow: PMySQL_Row; //enthält den aktuellen Datensatz
  _mySubRow: PMySQL_Row; //benötigt, um Autor zu ermmitteln
  i:Integer;
  idAuthor: String;
begin
  //wir werden uns als Root-Benutzer in localhost einloggen, ohne eine
  //bestimmte Datenbank auszuwählen
  host := 'localhost';
  user := 'root';
  pass := 'test';
  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');

  query := 'CREATE DATABASE APITest';
  mysql_real_query(_myCon, query, Length(query));

  MakeTables(_myCon);


  query := 'SELECT * FROM posts ORDER BY id';
  mysql_real_query(_myCon, query, Length(query));
 
  _myRes := mysql_store_result(_myCon); //alle Datensätze vom Server anfordern
  
  if _myRes = nil then
  begin
    ShowMessage('Es konnten keine Datensätze zurückgebenen werden. Ursache: ' + mysql_error(_myCon));
    Exit;
  end;
  SetLength(Posts, mysql_num_rows(_myRes)); //Posts-Array-Größe auf Anzahl der Datensätze setzen

  for i := 0 to High(Posts) do
  begin

    _myRow := mysql_fetch_row(_myRes); //Datensatz abholen
    Posts[i].id := Integer(_myRow[0]); //ID des Posts ist erstes Feld im Datensatz
    Posts[i].time := _myRow[2]; //Zeitpunkt ist drittes Feld
    Posts[i].text := _myRow[3]; //Text ist viertes Feld
   
    idAuthor := _myRow[1];
    query := PChar('SELECT name FROM users WHERE id=' + idAuthor);
    mysql_real_query(_myCon, query, Length(query));
    _mySubRes := mysql_store_result(_myCon);
    _mySubRow := mysql_fetch_row(_mySubRes);
    Posts[i].author := _mySubRow[0];
   
    mysql_free_result(_mySubRes); //Ergebnissatz löschen
  end;
 
  mysql_free_result(_myRes); //Ergebnissätze löschen
 
  {...}
  {Verbindung schließen oder etwas anderes machen}

// for i:=0 to
  mysql_close(_myCon);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CreateDB;
end;
aber leider bleibt der Array Posts immer leer wie kann ich ihn füllen ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: MySQL ohne Komponenten

  Alt 30. Jul 2006, 19:00
Klar, dass es leer bleibt, es befinden sich ja keine Einträge in den Tabellen!
Die Tabellen werden ja nur erzeugt, nicht befüllt! Dies müsstest du dann selbst mit entsprechenden INSERT-Statements machen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: MySQL ohne Komponenten

  Alt 31. Jul 2006, 14:03
ich habe jetzt ein insert befehl hinzugefügt, doch sie bleibt immer noch leer:
Delphi-Quellcode:

procedure MakeTables(_myCon: PMySQL);
var
  query: PChar;
begin
  mysql_select_db(_myCon, 'APITest'); //zu Datenbank "APITest" wechseln
  query:='CREATE TABLE posts(id int, author int, date datetime, entry text)';
  mysql_real_query(_myCon, 'CREATE TABLE posts(id int, author int, date datetime, entry text)', Length(query));
  query:='CREATE TABLE users(id int, name varchar(50), pass varchar(50))';

  mysql_real_query(_myCon, 'CREATE TABLE users(id int, name varchar(50), pass varchar(50))', Length(query));
end;
.....
  query := 'CREATE DATABASE APITest';
  mysql_real_query(_myCon, query, Length(query));


  MakeTables(_myCon);

  query := 'SELECT * FROM posts ORDER BY id';
  mysql_real_query(_myCon, query, Length(query));

  // ich bin sicher das muss hier hin doch die db bleibt immer noch leer warum ?
  query:='INSERT INTO posts (id, author, date, entry) VALUES (001, Michael Springwald, 10.10.2006, Dies ist ein test';
  mysql_real_query(_myCon, query, Length(query));

  _myRes := mysql_store_result(_myCon); //alle Datensätze vom Server anfordern

  if _myRes = nil then
  begin
    ShowMessage('Es konnten keine Datensätze zurückgebenen werden. Ursache: ' + mysql_error(_myCon));
    Exit;
  end;
  SetLength(Posts, mysql_num_rows(_myRes)); //Posts-Array-Größe auf Anzahl der Datensätze setzen
  ShowMessage(IntToStr(High(Posts)));
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: MySQL ohne Komponenten

  Alt 31. Jul 2006, 14:23
Lass dir mal den Fehlertext zurückgeben (mysql_error()) und lies dir die Dokumentation durch, dann wirst du hoffentlich erkennen, dass String-Literale in Hochkommata eingefasst werden müssen.

Tipp: Besorg dir ein Tool wie z.B. phpMyAdmin und teste dort erstmal, ob die Queries an sich richtig sind und versuche sie erst dann, in der Anwendung auszuführen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: MySQL ohne Komponenten

  Alt 31. Jul 2006, 14:29
es kommt folgende fehlermeldung:

Zitat:
---------------------------
codelib
---------------------------
Commands out of sync; you can't run this command now
---------------------------
OK
---------------------------
ich habe den string so gesetzt:

  query:='INSERT INTO posts (id,author,date,entry) VALUES (001, 5, 10.10.2005 10:35, ''Dies ist ein test'')'; und noch eine kurzte frage wie kann ich die bestehene db abspeichern in eine datei ??? es das Datum bzw. die uhrzeit falschangeben ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#10

Re: MySQL ohne Komponenten

  Alt 31. Jul 2006, 15:08
habes hinbekommen(fast):
Delphi-Quellcode:
  MakeTables(_myCon);
                                                                  
  // ich bin sicher das muss hier hin doch die db bleibt immer noch leer warum ?
  query:=PChar('INSERT INTO posts(id,author,date,entry) VALUES(1,Mimi,10-10-2005,''Dies ist ein test'')');
  mysql_real_query(_myCon, query, Length(query));


  query := 'SELECT * FROM posts ORDER BY id';
  mysql_real_query(_myCon, query, Length(query));
es gibt in der forschleife aus deinem tutor nur noch eine fehlermeldung:
Zitat:
---------------------------
codelib
---------------------------
Zugriffsverletzung bei Adresse 00457362 in Modul 'codelib.exe'. Lesen von Adresse 00000000.
---------------------------
OK
---------------------------
und noch eine frage wo wird diese db abgespeichert ??? weil der zähler wird immer erhöt bei jedem hinzufügen und beim programm ende !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 13 von 34   « Erste     3111213 141523     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 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