Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism Datenbankzugriff mit Delphi Prism auf Firebird (https://www.delphipraxis.net/153029-datenbankzugriff-mit-delphi-prism-auf-firebird.html)

RWarnecke 18. Jul 2010 13:23

Datenbank: Firebird • Version: 2.1.3 • Zugriff über: keine Ahnung

Datenbankzugriff mit Delphi Prism auf Firebird
 
Hallo zusammen,

da ich mit Delphi Prism bis jetzt noch nicht gearbeitet habe, wollte ich mal Fragen, ob es möglich ist mit Delphi Prism auf eine Firebird Datenbank zuzugreifen ? Ich würde mich über ein paar Links, Tutorials und ein paar kleine Beispiele freuen.

Danke und Gruß

mkinzler 18. Jul 2010 13:32

AW: Datenbankzugriff mit Delphi Prism auf Firebird
 
http://www.firebirdsql.org/dotnetfirebird/index.html
http://www.codeproject.com/KB/databa...d_ADO_NET.aspx
http://cc.embarcadero.com/item/27181

RWarnecke 18. Jul 2010 16:02

AW: Datenbankzugriff mit Delphi Prism auf Firebird
 
Hallo Markus,

danke für Deine prompte Antwort. Die ersten beiden Links sind sehr interessant. Werde mir das ganze jetzt mal in Ruhe anschauen. Der dritte Link auf die Seite von Emba funktioniert nicht.

Das Beginner Tutorial ist ja C#. Das habe ich auch hinbekommen. Nur unter Delphi Prism bekomme ich es nicht hin. Was muss ich in der Using Klausel hinzufügen und wie kann ich eine Verbindung herstellen ?

RWarnecke 18. Jul 2010 18:16

AW: Datenbankzugriff mit Delphi Prism auf Firebird
 
So nun nach ein paar Stunden testen mein bissher bestes Ergebnis : (es kompiliert zumindest und startet das Programm :firejump:)
Delphi-Quellcode:
namespace TestFirebird;

interface

uses
  System.Drawing,
  System.Collections,
  System.Collections.Generic,
  System.Windows.Forms,
  System.ComponentModel,
  Microsoft.AnalysisServices.AdomdClient;

type
  /// <summary>
  /// Summary description for MainForm.
  /// </summary>
  MainForm = partial class(System.Windows.Forms.Form)
  private
      method button1_Click(sender: System.Object; e: System.EventArgs);
  protected
    method Dispose(disposing: Boolean); override;
  public
    constructor;
  end;

implementation

{$REGION Construction and Disposition}
constructor MainForm;
begin
  //
  // Required for Windows Form Designer support
  //
  InitializeComponent();

  //
  // TODO: Add any constructor code after InitializeComponent call
  //
end;

method MainForm.Dispose(disposing: Boolean);
begin
  if disposing then begin
    if assigned(components) then
      components.Dispose();

    //
    // TODO: Add custom disposition code here
    //
  end;
  inherited Dispose(disposing);
end;
{$ENDREGION}

method MainForm.button1_Click(sender: System.Object; e: System.EventArgs);
var
  tCon: Adomdconnection;
  tCommand: AdomdCommand;
  ConnectionString: String;
  SQLCommandText: String;
begin
  ConnectionString := "UserID=sysdba;Password=masterkey;" +
              "Database=<ip-adresse>:C:\Firebird\TestDB.FDB; " +
              "DataSource=<ip-adresse>;Charset=NONE;";
  tCon := new Adomdconnection(ConnectionString);
  tCon.Open();
  tCon.BeginTransaction();
  SQLCommandText := " INSERT into Details Values('" + NameBox.Text + "'," + Int32.Parse(AgeBox.Text) + ",'" + SexBox.Text + "')";
  tCommand := new AdomdCommand;
  tCommand.CommandText := SQLCommandText;
  tCommand.Execute();
end;

end.
Das ist bis jetzt mein bester Versuch mit einer ADOConnection. Mit dem .NET Provider habe ich es schon garnicht kompiliert bekommen, da ich nicht weiß, wie ich den im uses-Bereich einfügen muss. Aber leider auch mit der ADO-Connection bekomme ich keine Verbindung zum Server hin. Jedesmal beim tCon.Open bricht er ab und läuft auf einen Timeout. Wenn ich mit anderen Programmen drauf zugreifen will, funktioniert es.

Habe ich irgendwas falsch gemacht und wenn ja was ?

Lemmy 20. Jul 2010 07:46

AW: Datenbankzugriff mit Delphi Prism auf Firebird
 
Hi,

nur zur Sicherheit: <ip-adresse> ist ein Platzhalter von dir, den du mit der korrekten IP-Adresse belegt hast und nur für das Posting hier reingemacht hast?

GRüße

Phoenix 20. Jul 2010 08:30

AW: Datenbankzugriff mit Delphi Prism auf Firebird
 
Ist doch eigentlich ganz einfach:
Referenz auf die FirebirdSql.Data.Firebird.dll in deinem Projekt hinzufügen (Rechtsklick drauf, Referenz hinzufügen).

Delphi-Quellcode:
uses FirebirdSql.Data.Firebird;
...

method MainForm.button1_Click(sender: System.Object; e: System.EventArgs);
var
  conn: FbConnection;
  cmd: FbCommand;
begin
   conn := new FbConnection('User=SYSDBA;Password=masterkey;'
      + 'Database=<ip-adresse>:C:\Firebird\TestDB.FDB;'
      + 'DataSource=<ip-adresse>;Charset=NONE;');

   conn.Open();
   var trans = conn.BeginTransaction(); // begin transaction liefert ein transaction objekt zurück, das muss man sich merken!
   cmd := conn.CreateCommand(); // am besten command über connection erzeugen, dann vergisst man nie die connection dem command zuzuweisen
   cmd.CommandText := ''; // NIE string zusammenbauen.. IMMER parametrisierte queries benutzen!
   cmd.Parameters.Add(new FbCommandParameter(Name := 'Paramname'; Value := 'value'));
   cmd.Execute();
   trans.Commit();
end;

RWarnecke 20. Jul 2010 09:20

AW: Datenbankzugriff mit Delphi Prism auf Firebird
 
Zitat:

Zitat von Lemmy (Beitrag 1036295)
nur zur Sicherheit: <ip-adresse> ist ein Platzhalter von dir, den du mit der korrekten IP-Adresse belegt hast und nur für das Posting hier reingemacht hast?

Ja, es ist nur ein Platzhalter hier für's Posting.

Hallo Sebastian,

danke für Dein Beispiel. Ich bin gerade unterwegs und werde Dein Beispiel heute Abend ausprobieren. Ich glaube, ich weiß schon, wo ich den Fehler gemacht habe. Eine Frage habe ich noch zu dem hier :
Zitat:

Zitat von Phoenix (Beitrag 1036309)
Referenz auf die FirebirdSql.Data.Firebird.dll in deinem Projekt hinzufügen (Rechtsklick drauf, Referenz hinzufügen).

Wie bekomme ich den Menüpunkt ? Das Wort FbConnection makieren und dann rechte Maustaste auf die makierten Text ?

Phoenix 20. Jul 2010 11:57

AW: Datenbankzugriff mit Delphi Prism auf Firebird
 
Im Solution-Explorer (Projektverwaltung) gibt es einen Order 'Referenzen'. Im Prinzip ist das ne Liste von allen .dll's (Assemblies) die vom Projekt verwendet werden (statisches Linken).

Dort den Rechtsklick drauf, und dort das Firebird-Assembly hinzufügen. Dann klappts auch mit der Uses ;-)

RWarnecke 20. Jul 2010 12:00

AW: Datenbankzugriff mit Delphi Prism auf Firebird
 
Hallo Sebastian,

danke für Deine Antwort. Werde es heute Abend mal ausprobieren. Wenn ich noch Fragen oder Probleme habe, melde ich mich heute Abend wieder.

RWarnecke 20. Jul 2010 20:01

AW: Datenbankzugriff mit Delphi Prism auf Firebird
 
Hallo Sebastian,

ich habe jetzt mal Dein Beispiel versucht nachzustellen. Ich musste die folgenden Sachen um ändern, damit mir VS das Projekt compilieren konnte :
  • Aus FirebirdSQL.Data.Firebird wurde FirebirdSQL.Data.FirebirdClient
  • Die Zeile mit den Parametern habe ich ganz entfernt.
  • cmd.Execute(); hat der Compiler bei mir nicht gefunden.

Ich habe mir den .NET Provider 2.5.2 von der Firebird-Seite heruntergeladen und dann die Referenze so eingefügt, wie Du es beschrieben hast. Mit diesem Sourcecode habe ich es jetzt hinbekommen :

Delphi-Quellcode:
uses
  FirebirdSql.Data.FirebirdClient;

{...}

method MainForm.button1_Click(sender: System.Object; e: System.EventArgs);
var
  cmd: FbCommand;
  conn: FbConnection;
  SQLCommandText: String;
begin
  conn := new FbConnection('User ID=sysdba;Password=masterkey;' +
              'Database=<ip-adresse>:C:\\Firebird\\TestDB.FDB; ' +
              'DataSource=<ip-adresse>;Charset=NONE;');
  SQLCommandText := " INSERT into Details Values ('" + NameBox.Text + "'," + Int32.Parse(AgeBox.Text) + "," + "'" + SexBox.Text + "')";

  conn.Open();
  var trans := conn.BeginTransaction();
  cmd := new FbCommand(SQLCommandText, conn, trans);
  cmd.ExecuteNonQuery;
  trans.Commit;
  conn.Close();
end;
Nur Dein Teil mit den Parametern funktioniert nicht. Könntest Du mir das bitte nochmal erklären, wie das mit den Parametern funktioniert ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:21 Uhr.
Seite 1 von 2  1 2      

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