AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehler beim Zugriff auf Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler beim Zugriff auf Datenbank

Ein Thema von flobbie · begonnen am 25. Jan 2008 · letzter Beitrag vom 28. Jan 2008
 
flobbie

Registriert seit: 24. Jan 2008
7 Beiträge
 
#1

Fehler beim Zugriff auf Datenbank

  Alt 25. Jan 2008, 21:10
Datenbank: MySQL • Version: 5 • Zugriff über: dbexpress
Hi,
ich habe in letzter Zeit versucht mit Delphi eine SQL-Verbindung zu meinem Server aufzubauen. Das hat mit den Komponenten und der Oberfläche dann auch super funktioniert. Da ich noch nicht so lange mit Delphi arbeite, und am Lernen bin, wollte ich es gerne nochmal ohne Oberfläche mit einem Code machen. Dann habe ich das geschrieben. Leider habe ich da einen Fehler drin, ich sehe ihn aber nicht. Er unterstreicht nichts rot, und ich denke ich habe auch alle Klassen importiert.

Delphi-Quellcode:
uses
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBXpress, WideStrings, DB, SqlExpr, FMTBcd, Provider, DBClient, DBCtrls;
Mein geschriebener Code sieht so aus:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
mysql : TSQLConnection;
query : TSQLQuery;
provider: TDataSetProvider;
dataset : TClientDataSet;
datasource : TDataSource;
texteng : TDBText;

begin
//SQL Verbindung
mysql := TSQLConnection.Create(Self);
mysql.Connected := false;
mysql.ConnectionName := 'OpenMySQL50';
mysql.DriverName := 'OpenMySQL50';
mysql.LoginPrompt := false;
mysql.Params.Values['DriverName'] := 'OpenMySQL50';
mysql.Params.Values['HostName'] := 'IP';
mysql.Params.Values['Database'] := 'datenbankname';
mysql.Params.Values['User_Name'] := 'datenbanktabelle';
mysql.Params.Values['Password'] := 'datenbankpasswort';
mysql.Params.Values['BlobSize'] := '-1';
mysql.GetDriverFunc := 'getSQLDriverMYSQL50';
mysql.KeepConnection := true;
mysql.LibraryName := 'dbxopenmysql50.dll';
mysql.LoadParamsOnConnect := false;
mysql.Name := 'mysqlVerbindung';
mysql.VendorLib := 'libmysql.dll';
mysql.Connected := true;
mysql.Open;

//Query
query := TSQLQuery.Create(Self);
query.Active := false;
query.MaxBlobSize := 0;
query.ObjectView := false;
query.ParamCheck := true;
query.SQL.Text := 'SELECT en FROM en_de WHERE id=1';
query.SQLConnection := mysql;
query.GetMetadata := false;
query.Name := 'mysqlQuery1';
query.NumericMapping := false;
query.Active := true;
mysql.Close;
mysql.Free;

//DataSetProvider
provider := TDataSetProvider.Create(Self);
provider.DataSet := query;
provider.Constraints := true;
provider.Exported := true;
provider.Name := 'mysqlProvider';
provider.ResolveToDataSet := false;
provider.UpdateMode := upWhereAll;

//DataSet
dataset := TClientDataSet.Create(Self);
dataset.Active := false;
dataset.AutoCalcFields := true;
dataset.ProviderName := provider;
dataset.ObjectView := true;
dataset.StoreDefs := false;
dataset.ReadOnly := false;
dataset.AggregatesActive := false;
dataset.DisableStringTrim := false;
dataset.FetchOnDemand := true;
dataset.Name := 'mysqlDataSet';
dataset.Active := true;

//DataSource
datasource := TDataSource.Create(Self);
datasource.Enabled := false;
datasource.DataSet := dataset;
datasource.AutoEdit := true;
datasource.Name := 'mysqlDataSource';
datasource.Enabled := true;

//Englischer Text
texteng := TDBText.Create(Self);
texteng.Enabled := false;
texteng.DataField := 'en';
texteng.DataSource := datasource;
texteng.Align := alNone;
texteng.AlignWithMargins := false;
texteng.AutoSize := true;
texteng.Height := 57;
texteng.Left := 40;
texteng.Enabled := true;

end;
Ich hatte, bis ich das DataSetProvider und die danach erstellt hatte, keine Fehler. Also SQL Query und die Connection funktioniert. Habe ich extra getestet, in dem ich eine nicht funktionierende Tabelle angegeben habe, und eine Antwort vom MySQL-Server bekommen habe, das die nicht vorhanden sei.

Beim Ausführen sagt er mir jetzt:
dataset.ProviderName := provider;
Zitat:
[Pascal Fehler] Unit1.pas(84): E2010 Inkompatible Typen: 'string' und 'TDataSetProvider'
[Pascal Fataler Fehler] Project1.dpr(5): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Ok. Dann habe ich erstmal statt provider, 'mysqlProvider' geschrieben, was ich vorher bei provider.Name angegeben habe.
Dann geht er weiter und ich bekomme einen neuen Fehler.
datasource := TDataSource.Create(Self);
Zitat:
Erste Gelegenheit für Exception bei $7C812A5B. Exception-Klasse EDatabaseError mit Meldung 'Für diese Operation ist die Eigenschaft SQLConnection erforderlich'. Prozess Project1.exe (1660)
Ich habe keine Ahnung, warum er Delphi mir sagt, dass wenn ich die Variable bei dataset.ProviderName angebe, einen Fehler ausgibt.
Ich habe bei den anderen Komponenten doch auch die Variable angegeben. Warum geht das hier nicht.

Eine Zusatzinformationen: Die Form ist ganz leer. Ich habe bis jetzt nur über die Textebene gearbeitet.

Ich danke euch für das Lesen meines Codes und für eure Hilfen.
Mit freundlichen Grüßen
Flobbie
  Mit Zitat antworten Zitat
 


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 21:59 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 by Thomas Breitkreuz