Tabellennamen aus Access DB



  • Moin Gemeinde,

    mal ne Frage: Wie bekomme ich die Tabellennamen aus einer Access mdb?
    Verwendet wird OdbcConnection mit ConnString. Soweit so gut. Nur um weiterzumachen, muss ich einen Tabellennamen angeben. Und davon gibt es mehrere in dieser mdb.

    Könnte mich mal einer auf die richtige Spur schubsen? Wäre toll 💡

    thx schonmal

    grüssle 🙂



  • Also wenn Du die Anmeldedaten des Adminstrators dieser Accessdatenbank hast oder sedlbst der Administrator bist sollte folgendes vielleicht gehen!
    Habs im Netz gefunden da ich zwar *.mdb - Dateien da habe aber kein Office auf meiner Kiste kann ichs nicht weiter testen.

    Trotzdem hier denn Code:

    System.Data.OleDb.OleDbCommand oledbcom = new System.Data.OleDb.OleDbCommand("SELECT name AS tablename FROM MSysObjects WHERE [type] = 1 AND [flags] = 0", this.oleDbConnection1);
    
    				this.oleDbConnection1.Open();
    
    				System.Data.OleDb.OleDbDataReader oledbdr = oledbcom.ExecuteReader();
    				while(oledbdr.Read())
    				{
    					this.listBox1.Items.Add(oledbdr.GetString(1));
    				}
    				this.oleDbConnection1.Close();
    			}
    			catch(System.Exception ex)
    			{
    				MessageBox.Show(ex.Message);
    			}
    

    Da ich kein Access habe kann ich meine Datenbank jetzt auch nicht nachbearbeiten. Ich bekomme nähmlich immer ne Exception das ich zuwenig Rechte an MSysObjects habe!Vielleicht hilfts Dir weiter google mal auf "MSysObjects keine Berechtigung" vielleicht kommste zu was brauchbaren?
    Ansonsten sieht der Ansatz ganz oder erstmal nicht so uncool aus hmmm 😕

    mfg sclearscreen 🙂



  • Bitte nicht stören an OleDb
    es git genauso OdbcCommand, OdbcConnection etc.
    und OdbcReader
    die sind in ihrer Handhabung gleich nur bei dem Connectionstring unterscheidet sich der Inhalt zwischen OledbConnection und OdbcConnection etwas!

    mfg sclearscreen

    Ansonsten wie gesagt ich habe nur ein Rechteproblem an MsSysobjects musst halt mal googln wie man Berechtigung an dem Teil bekommt! Dann sollte es funzen denke ich 👍



  • Wusste ichs doch man brauch Access hier noch ein nützzlicher Link um Berechtigung an
    MsSysobjects unter ADO.NET zu bekommen!
    http://blogs.dotnetgerman.com/alexonasp.net/CommentView,guid,09ba1c1a-810d-489e-a194-67f4890d80b1.aspx



  • Dieses Objekt MsSysobjekt ist demnach versteckt wie der Autor in seinem Beitrag mein ich hatte oben nochmal was irreführendes aus meinem Codebeispiel entfernt, wo
    ich erst dacht so ginge es auch !

    mfg sclearscreen 🙂



  • Kann ich Dir folgenden Code präsentieren habs getestet funzt wunderprächtig
    wenn Du auf OLEDB umsteigst siehe ja auch im Code! 😃

    this.oleDbConnection1.Open();
    
    				DataTable schemaTable = this.oleDbConnection1.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"});
    				for(int i =0 ;i<schemaTable.Rows.Count;i++)
    				{
    					DataRow dr = schemaTable.Rows[i];
    					if(dr["TABLE_TYPE"].ToString() == "TABLE")
    						this.listBox1.Items.Add(dr["TABLE_NAME"].ToString());
    
    				}
    
    				this.oleDbConnection1.Close();
    

    mfg sclearscreen

    so nu is aber gut viel Spass 😉


Anmelden zum Antworten