Thema: Delphi MySQL ohne Komponenten

Einzelnen Beitrag anzeigen

pemue

Registriert seit: 17. Jan 2008
20 Beiträge
 
Delphi 7 Enterprise
 
#238

Re: MySQL ohne Komponenten

  Alt 18. Jan 2008, 10:50
Hi ich habe folgendes Problem, wenn Compilieren will, kommt immer eine Meldung "[82] Variable 'query' ist möglicherweise nicht initialisiert worden"

Aber es compiliert trotzdem, nur mit dem erstellen der Tabellen haut es nicht hin, also DB wird erstellt, aber die Tabellen nicht... bitte helft mir weiter
Danke schonmal

Gruß
Pemue

Delphi-Quellcode:
unit MySQLTest;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, mySQL, StdCtrls, Menus;

type
  TForm1 = class(TForm)
    grbConnect: TGroupBox;
    btConnect: TButton;
    edHost: TEdit;
    edUser: TEdit;
    edPassw: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    edDB: TEdit;
    Label4: TLabel;
    PopupMenu1: TPopupMenu;
    localhost1: TMenuItem;
    procedure btConnectClick(Sender: TObject);
    procedure localhost1Click(Sender: TObject);
    procedure MakeTables(_myCon: PMySQL);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btConnectClick(Sender: TObject);
var
  _myCon: PMySQL; //unseren Verbindungsdeskriptor
  host, user, pass, db: PChar; //die Anmeldedaten
  query: PChar;
begin
  //Aufnehmen der Anmeldedaten
  host := pchar(edHost.Text);
  user := pchar(edUser.Text);
  pass := pchar(edPassw.Text);
  db := pchar(edDB.Text);

  //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');

    if MessageDlg('Soll eine neue Datenbank angelegt werden?',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
      query := 'CREATE DATABASE apitest';
      mysql_real_query(_myCon, query, Length(query));
    end;
      if MessageDlg('Neue Tabellen anlegen?',
      mtConfirmation, [mbYes, mbNo], 0) = mrYes then
        MakeTables(_myCon)
end;

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

procedure TForm1.localhost1Click(Sender: TObject);
begin
edHost.Text := 'localhost';
edUser.Text := 'root';
edPassw.Text := 'jazzy';
end;

end.
  Mit Zitat antworten Zitat