AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi mySQL-Datenbankzugriff über C-API: mysql_create_db(...)
Thema durchsuchen
Ansicht
Themen-Optionen

mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

Ein Thema von Steffen · begonnen am 25. Jan 2004 · letzter Beitrag vom 26. Jan 2004
Antwort Antwort
Seite 1 von 3  1 23      
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#1

mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 14:15
Hallo!

Ich arbeite gerade daran über die C-API und mysql.pas auf meine mySQL-Datenbank zu zugreifen.

es klappt eigentlich auch ganz gut, nur bekomme ich gerade einen komischen Fehler und ich weiß nicht woran es liegt...

Nachdem ich mit mit der Datenbank verbunden habe, möchte ich eine Datenbank erstellen. Eigentlich gibt's in der API die Funktion "mysql_create_db(<name>)" mit der man eine Datenbank anlegen kann. (Intern macht die Funktion nichts anderes, als "CREATE DATABASE + <name>")

Ich habe also folgendes versucht:
Delphi-Quellcode:
uses
  ...
  mySQL;

var
  DataBaseSocket: PMySQL;
  ...
function TDataBaseModule.CreateDatabase(strDatabaseName : String) : Boolean;
begin
  if Connected then
    begin
      Result := True;
      try
        mysql_create_db(DataBaseSocket, PAnsiChar(strDataBaseName)) // Hier entsteht der Fehler!
      except
        Result := False;
        ShowMessage('Fehler bei CreateDataBase!' + mysql_error(DataBaseSocket));
      end
    end
  else
    begin
      ShowMessage('Um eine Datanbankanfrage auszuführen muss eine Verbindung zur Datenbank bestehen!');
      Result := False
    end
end;
Wobei ich einen Speicherzugriffsfehler von Delphi geliefert bekomme.

Wenn ich aber anstatt der Funktion "mysql_create_db()" folgendes mache:
mysql_real_query(DataBaseSocket, PAnsiChar('CREATE DATABASE ' + strDataBaseName),Length('CREATE DATABASE ' + strDataBaseName)) dann funktioniert alles bestens und es wird eine Datenbank angelegt.

Hat jemand damit etwas mehr Erfahrung, als ich und kann mir sagen woran das liegt?

Vielen Dank im Voraus,
Steffen
  Mit Zitat antworten Zitat
Chewie

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

Re: mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 14:35
Hi Steffen, ich kann dein Problem nicht nachvollziehen. Bei mir funktioniert mysql_create_db tadellos, die Datenbank wird erstellt und ich bekomme auch keine Fehlermeldung.

Die Tatsache, dass es keine MySQL-Fehlermeldung gibt, sondern eine AccessViolation, macht mich etwas stutzig. Access Violations, die ich mir nicht erklären konnte, hatte ich auch ein Mal. Damals hatte ich glaub ich die DLL, die as auf der von dir genannten Homepage gibt. Nachdem ich diese durch die beim MySQL-Server mitgelieferte ersetzt hab, ging alles glatt.

Ein kleiner Hinweis übrigens noch. In der Dokumentation zu der Funktion heißt es:

Zitat:
This function is deprecated. It is preferable to use mysql_query() to issue an SQL CREATE DATABASE statement instead.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 14:42
Ich habe mir mal die DLL von http://www.fichtner.net/delphi/mysql.delphi.phtml runtergeladen, aber damit passiter genau das selbe...
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 14:44
Könntest Du mal das Stück Code posten, mitdem Du eine Datenbank erstellst...?
  Mit Zitat antworten Zitat
Chewie

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

Re: mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 14:52
Versuch mal das Testprogramm hier:

Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses mysql, windows;


var
  _connector: PMySQL;
  sqlresult: PMySQL_Res;
  sqlrow: PMySQL_Row;
  Host, Login, Password, Query: PChar;
begin
  //Parameter festlegen
  Host := '??';
  Login := ??;
  Password := ??;

  //Zugangskennung initialisieren
  _connector := mysql_init(nil);

  //Verbindung herstellen
  _connector := mysql_real_connect(_connector,Host,Login,Password,nil,3306,nil,0);
  if _connector = nil then
  begin
    WriteLn('Die Verbindung ist fehlgeschlagen');
    Exit;
  end;

  if mysql_create_db(_connector, 'TestDB') <> 0 then
    WriteLn(mysql_error(_connector));

  //Verbindung schließen
  mysql_close(_connector);
  ReadLn;

Das klappt bei mir.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 14:58
Ich bekomme den Fehler:

"Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000"...

ist irgendwas nicht initialisiert?
  Mit Zitat antworten Zitat
Chewie

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

Re: mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 15:05
Das sieht mir so aus, als könnte er den Einstiegspunkt in der DLL nicht finden. Ist sie im richtigen Verzeichnis? Wenn ja, hast du es schonmal mit der DLL probiert, die beim MySQL-Server 3.23x dabei ist?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 15:08
Die DLL ist da. ich werde mal die v3.23-DLL runterladen.
Mal sehen, was dann passiert.
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 15:17
auch mit der 3.23-DLL passiert nichts anderes...

Irgendwie muss der Fehler woanders liegen...
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: mySQL-Datenbankzugriff über C-API: mysql_create_db(...)

  Alt 25. Jan 2004, 15:20
Immerhin bekomme ich jetzt keine AccessViolation mehr, sondern es wird der except-Teil ausgeführt...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz