Announcement

Collapse
No announcement yet.

Zugriff auf Firebird-Datenbank

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf Firebird-Datenbank

    Hi Leute,
    hier ist mal wieder eine total blutiger Anfänger mit einem, für mich sehr schweren Problem.
    Ich soll eine Verbindung zur Firebird-Datenbank herstellen und in eine Textbox das Ergebnis einer SQL-Anweisung schreiben. Dies soll alles über den ODBC-Treiber von Interbase geschehen.
    Bislang habe ich nur Hinweise zur Anbindung über die OLEDB-Methode gefunden jedoch noch keinen guten freeware treiber gesehen.
    Es wäre echt toll wenn man mir helfen könnte, da ich mich mit VB.Net noch garnicht auskenne und ich echt am verzwiefeln bin.

    Ich bin für jede Hilfe äußert dankbar und hoffe dadurch ne Menge Erfahrung zu sammeln.

    Danke und nen schönen Tag euch allen!!!

  • #2
    Hallo,

    für Firebird gibt es einen "richtigen" Firebird NET Provider; es ist unbedingt zu empfehlen, diesen zu verwenden statt eine der Krücken.

    Hier gibt es viele Beispiele für ConnectionStrings.

    Das Ergebnis einer SQL-Anweisung in eine TextBox zu schreiben funktioniert nur in seltenen Fällen, nämlich dann, wenn durch DbCommand.ExecuteScalar-Methode genau ein Wert zurückgegeben wird.

    Falls Du weitere Literatur suchst: Das OpenBook VC# hat in Kap. 26 Anleitungen (statt Sql-Klassen musst Du dann Fb-Klassen verwenden).

    Ich hoffe, ich konnte einige Anregungen geben. Jürgen

    Comment


    • #3
      Danke ganz hiflreich doch bei mit haut das ganze noch nicht so ganz hin, ich stell mich wohl zu doof an.
      den Namespace wird mir nicht bei Imports angezeigt und wie ich die registry ändern muß ist mir leider unklar.
      Ich bitte noch mal um unterstützung.

      vielen dank für jede hilfe

      Comment


      • #4
        Originally posted by Christian160583 View Post
        und wie ich die registry ändern muß ist mir leider unklar.
        Dazu gibt es (wenn ich mich richtig erinnere) eine Textdatei, die die Änderungen bei den verschiedenen Versionen beschreibt.

        Hast Du auch den DDEX-Provider installiert? In der Readme.Txt dazu wird dies beschrieben. Außerdem gibt es die Hilfeseiten und FAQs; diese Internet-Seiten sind in den Readme-Dateien genannt.

        den Namespace wird mir nicht bei Imports angezeigt
        Hast Du die FirebirdSql.Data.FirebirdClient.Dll als Referenz (im Projekt-Explorer) hinzugefügt? Das ist die Voraussetzung.

        Viel Erfolg! Jürgen

        Comment


        • #5
          Danke Danke Danke, jetzt fehlt mir nur noch der richtige syntax des Vebindungsstring und ich bin überglücklich. Muss ich den provider jetzt noch im String mit angeben (bsp con="Provider=firebird;Data Source=c:\..;User ID=..;Password=...") oder muss ich den gesamten String angeben den du oben in link genannt hast. Desweiteren wie sieht es eigentlich aus wenn ich einen kompletten Datensatz in ein array schreiben will?? Kannst mir auch da ne kleine hilfestellung geben.
          und schon wieder danke ich im vorraus!!!!!
          (p.s juhu juhu ich freu mich so über die hilfe von euch allen und von dir jürgen!)

          nachtrag: ich hab den kompleten verbindungsstring eingegeben und ich bekomm ne fehlermeldung das irgendwas mit dem local host nicht stimmt?? keine ahnung was er hat.
          Zuletzt editiert von Christian160583; 05.09.2007, 14:58.

          Comment


          • #6
            Originally posted by Christian160583 View Post
            jetzt fehlt mir nur noch der richtige syntax des Vebindungsstring und ich bin überglücklich. Muss ich den provider jetzt noch im String mit angeben (bsp con="Provider=firebird;Data Source=c:\..;User ID=..;Password=...") oder muss ich den gesamten String angeben den du oben in link genannt hast.
            Ich weiß nicht, ob es eine Variante gibt, dass der Provider im ConnectionString steht. Ich gehe davon aus, dass er in der app.config (oder in der machine.config) eingetragen ist. Unter ConnectionStrings stehen Beispiele, keine Vorschriften. Es gibt auch den FbConnectionStringBuilder; in der Hilfe stehen die möglichen Eingaben.

            Desweiteren wie sieht es eigentlich aus wenn ich einen kompletten Datensatz in ein array schreiben will?? Kannst mir auch da ne kleine hilfestellung geben.
            Das ist ja wohl ein ganz neues Problem. Dazu siehe das OpenBook. (Bitte berücksichtige bei solchen - neuen - Fragen, dass Du einen Datensatz nicht in ein Array schreiben willst, sondern in eine Tabelle oder DataRowCollection oder Datenbank.)

            nachtrag: ich hab den kompleten verbindungsstring eingegeben und ich bekomm ne fehlermeldung das irgendwas mit dem local host nicht stimmt?? keine ahnung was er hat.
            Ich habe auch keine Ahnung (meine Glaskugel ist defekt). Dafür gibt es try-catch und die Möglichkeit, eine Exception genau anzuzeigen. Konkret: Welche Exception, welche Fehlermeldung, welche Codezeile, welcher Zusammenhang... Jürgen

            Comment


            • #7
              Nur mal so als kleiner hinweiß für mich ungebildeten Praktikanten worin besteht eigentlich der Unterschied zwischen Database und Datasource wenn ich nur die Firebird Datei *.gdb habe und diese local aud meinen Rechner gespeichert ist

              Comment


              • #8
                Originally posted by Christian160583 View Post
                Nur mal so als kleiner hinweiß für mich ungebildeten Praktikanten worin besteht eigentlich der Unterschied zwischen Database und Datasource wenn ich nur die Firebird Datei *.gdb habe und diese local aud meinen Rechner gespeichert ist
                Ach, wenn das doch immer eindeutig und klar wäre... Ausgerechnet Datasource hat in unterschiedlichem Zusammenhang verschiedene Bedeutungen.

                Zur Erklärung eine meiner Lösungen (conn ist die FbConnection):
                Code:
                public void Init(string User, string Pwd, string dbf) {        
                	connStr = new FbConnectionStringBuilder();
                	connStr.Add("Data Source", "localhost");
                	connStr.Add("Database", dbf);
                	connStr.Add("User ID", User);
                	connStr.Add("Password", Pwd);       
                	//  jetzt die Verknüpfung registrieren
                	conn.ConnectionString = connStr.ConnectionString;   
                	//  usw.
                Viel Erfolg! Jürgen

                PS. gdb gibt es aus historischen Gründen. Für künftige Dateien wird fdb als Extension empfohlen.

                Comment


                • #9
                  Hi und guten morgen!!
                  Hab mal deine Variante getestet jedoch gibt es immernoch Probleme wenn die Datenbank auf meinen eigenen Rechner lieg. Wenn ich überdas Netzwerk den entsprechenden Server anspreche funktioniert die Datenverbindung tatellos.
                  hier mal der Code für Local:
                  Code:
                  Dim dbf2 As String = "C:\gdi.gdb"
                  Dim connStr As FbConnectionStringBuilder = New FbConnectionStringBuilder()
                  connStr.Add("Data Source", "Localhost")
                  connStr.Add("Port", "23050")
                  connStr.Add("Database", dbf2)
                  connStr.Add("User ID", "SYSDBA")
                  connStr.Add("Password", "masterkey")
                  Dim conn As FbConnection = New FbConnection(connStr.ToString)
                  Dim sqlCmd As String = "select name1 from kunden where kundennr=10001"
                  Dim cmd As FbCommand = New FbCommand(sqlCmd, conn)
                  conn.Open()
                  Dim text As String = cmd.ExecuteScalar()
                  Console.WriteLine(text.ToString)
                  Console.ReadLine()
                  conn.Close()
                  Hier gibt es die Fehlermeldung, das keine Verbindung zum Localhost aufgebaut werden kann.
                  Code:
                  Dim dbf As String = "H:\GDI\WaWi\Daten\GDI_TEST.gdb"
                  Dim connStr As FbConnectionStringBuilder = New FbConnectionStringBuilder()
                  connStr.Add("Data Source", "commonits")
                  connStr.Add("Port", "23050")
                  connStr.Add("Database", dbf)
                  connStr.Add("User ID", "SYSDBA")
                  connStr.Add("Password", "masterkey")
                  Dim conn As FbConnection = New FbConnection(connStr.ToString)
                  Dim sqlCmd As String = "select name1 from kunden where kundennr=10001"
                  Dim cmd As FbCommand = New FbCommand(sqlCmd, conn)
                  conn.Open()
                  Dim text As String = cmd.ExecuteScalar()
                  Console.WriteLine(text.ToString)
                  Console.ReadLine()
                  conn.Close()
                  Hier funktioniert es und ich weiß nicht wo der Fehler sein könnte. Wäre tolle wenn man mal drüber gucken könnte und mir Fingerzeig gibt wo der Fehler sein könnte.
                  Oder muss ich Local nen bestimmte Einstellung vornehmen??

                  Schönen Tag noch

                  PS.: Danke für den Hinweis mit den Extension, aber die Firma in der ich arbeite nutzt ein Buchhaltungssystem welches halt Daten im Format gdb abspeichert, und daran wird sich bestimmt ne lange Zeit nichts ändern.

                  Comment


                  • #10
                    Hallo Christian,

                    probiere einmal, dass Du den "port" aus dem ConnectionString entfernst. Vielleicht bringt der den Connection-Aufbau durcheinander.

                    Gruß Jürgen

                    PS. Die Extension hat ja eigentlich keine Bedeutung. M$ hatte gdb für irgendeine spezielle Art von Dateien festgelegt; deshalb ist Interbase ab Version 7.x davon abgegangen, Firebird ebenso.

                    Comment


                    • #11
                      Hi Jürgen, hab mal die Zeile mit dem Port ausgeklammert jedoch gibt es dann die Fehlermeldung das die User ID und das Password nicht stimmt. Ist halt nur doof das ich so nicht local arbeiten kann sondern nur über das netzwerk, was zwar nicht schlimm ist aber zum testen ist das halt nicht so ideal.

                      Comment

                      Working...
                      X