AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Prism Datenbankzugriff mit Delphi Prism auf Firebird
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankzugriff mit Delphi Prism auf Firebird

Ein Thema von RWarnecke · begonnen am 18. Jul 2010 · letzter Beitrag vom 20. Jul 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 18. Jul 2010, 14:23
Datenbank: Firebird • Version: 2.1.3 • Zugriff über: keine Ahnung
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ß
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 18. Jul 2010, 14:32
http://www.firebirdsql.org/dotnetfirebird/index.html
http://www.codeproject.com/KB/databa...d_ADO_NET.aspx
http://cc.embarcadero.com/item/27181
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 18. Jul 2010, 17:02
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 ?
Rolf Warnecke
App4Mission

Geändert von RWarnecke (18. Jul 2010 um 17:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

AW: Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 18. Jul 2010, 19:16
So nun nach ein paar Stunden testen mein bissher bestes Ergebnis : (es kompiliert zumindest und startet das Programm )
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 ?
Rolf Warnecke
App4Mission

Geändert von RWarnecke (18. Jul 2010 um 19:26 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 20. Jul 2010, 08:46
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
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#6

AW: Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 20. Jul 2010, 09:30
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;
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

AW: Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 20. Jul 2010, 10:20
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 :
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 ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#8

AW: Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 20. Jul 2010, 12:57
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
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#9

AW: Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 20. Jul 2010, 13:00
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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#10

AW: Datenbankzugriff mit Delphi Prism auf Firebird

  Alt 20. Jul 2010, 21:01
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 ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:18 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