![]() |
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ß |
AW: Datenbankzugriff mit Delphi Prism auf Firebird
|
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 ? |
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:
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.
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. Habe ich irgendwas falsch gemacht und wenn ja was ? |
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 |
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; |
AW: Datenbankzugriff mit Delphi Prism auf Firebird
Zitat:
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:
|
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 ;-) |
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. |
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 :
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:
Nur Dein Teil mit den Parametern funktioniert nicht. Könntest Du mir das bitte nochmal erklären, wie das mit den Parametern funktioniert ?
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 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