Announcement

Collapse
No announcement yet.

Verbindung zu einer Access-Datenbank aufbauen und in dieser Suchen

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

  • Verbindung zu einer Access-Datenbank aufbauen und in dieser Suchen

    Hallo alle zusammen,

    ich habe ein sehr großes Problem mit dem ich mich schon seit Tagen quäle. Ich hoffe ihr könnt mir helfen.

    Also ich möchte über eine Button meine Datenbank öffnen (Office 2010 Professional und Dateityp *.accdb). Dies Funtioniert nicht wie ich das möchte.
    Hier einmal der C# Code:
    Code:
    System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
                conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;
                                              @Data source=E:\\Aufstellung-PC-Inventar-PHS.accdb";
                try
                {
                    conn.Open();
                }
                catch
                {
                    MessageBox.Show("Die Datenbank ist nicht vorhanden!");
                }
    Und dann möchte ich noch in der Datenbank suchen, die Suchbefehle stehen dann in TextBoxen im Windows Form.
    Ich habe hier einmal einen Code gefunden, aber ich verstehe ihn nicht, könnt ihr mir da vllt helfen und sagen ob dieser für mich hilfreich ist.
    Die Ergebnisse sollen dann in einer externen Datei ausgegeben werden.
    Code:
                OleDbConnection con = new OleDbConnection("");
                OleDbCommand word = new OleDbCommand("SELECT * FROM PC-Inventar", con);
                DataSet ds = new DataSet();
                OleDbDataAdapter da = new OleDbDataAdapter(word);
                da.FillSchema(ds, SchemaType.Source);
                da.Fill(ds);
                DataRow[] liste = ds.Tables[0].Select();
                DataTable PC_Inventar = ds.Tables[0];
                DataRow[] liste1 = PC_Inventar.Select("");
                foreach (DataRow item in liste1)
                    Console.WriteLine("{0}, {1}", item["PC_Inventar"], item["textBox1.Text"]);
    Ich hoffe ihr könnt mir helfen.
    Danke schon einmal im Vorraus für eure Bemühungen.

    MFG Philipp

  • #2
    Warum fängst du nicht die Exception und schaust, welcher Fehler auftritt

    catch ???
    sagt wenig aus
    Christian

    Comment


    • #3
      Das @ vor Data Source ist merkwürdig. Aber du solltest die Exceptions richtig auswerten, so wie Christian schon angedeutet hat. Einfach fangen und durch was anderes als Text zu ersetzen ist nicht hilfreich. Die eigentliche Excveption sollte dir sagen wo das Problem ist.

      Dein 2.ter Code über einen DataAdapter eine DataTable zu füllen ist prinzipiel nutzbar bis zum da.Fill(ds) da brauchst du kein Dataset aus dem du die DataTable mit den Daten wieder rauspulen musst. Der DataAdapter hat auch eine Fill Überladung mit der man direkt eine DataTable füllen kann. Der Code danach ist weniger sinnvoll. Wenn du eine Suche implementieren willst solltest du mit deinen Suchparametern ein passendes SQL erstellen und absetzen und nicht einfach ein 'Select * from Quelle' um dann lokal wieder zu versuchen die nicht passenden Daten rauszufiltern. Da hat man vermutlich bereits schon viel zu viel Daten zwischen Datenbank und Prozess transportiert was unnötig Performance kostet.

      Comment


      • #4
        zu dem 2. merkwürdigen @:
        wenn ich das @ weg lasse, dann kommt die Fehlermeldung "Nicht erkennbares Datenbankformat 'E:\Aufstellung-PC-Inventar-PHS.accdb' " bei dem conn.Open();

        und mit dem @ zeichen kommt Installierbares ISAM nicht gefunden bei conn.Open();

        Comment


        • #5
          "Provider=Microsoft.Jet.OLEDB.4.0" ist der alte Treiber für die mdb-Dateien.
          Für die neuen ist es ein anderer Provider

          Comment


          • #6
            Kann man den accdb mit dem Jet Provider überhaupt öffnen?

            Hab kurz mal gegoggelt und da wird 'Microsoft.ACE.OLEDB.12.0' als Provider verwendet und nicht Jet. Könntest du mal ausprobieren. Wenn das nicht hilft solltest du vielleicht mal im Datenbank/MS Access Bereich nachfragen welchen Provider man bei welcher Access Version verwenden muss.

            Comment


            • #7
              Wenn ich es jetzt mit dem neuen Provider versuche kommt wieder bei conn.open(); foldende Fehlermeldung "Installierbares ISAM nicht gefunden."

              Comment


              • #8
                Provider den installiert? Wenn du das passende Office installiert hast sollte der da sein.

                Comment

                Working...
                X