Toon posts:

[C#/ODBC] Probleem met gebruik GetSchema()

Pagina: 1
Acties:

Verwijderd

Topicstarter
Na hevig zoeken heb ik niet op internet of waar dan ook het gewenste antwoord kunnen vinden.

Het probleem is het volgende...

Ik ben een query tool aan het maken waarbij ik nu een specifiek onderdeel programmeer. Ik heb een comboBox waarbij je de gewenste odbc driver selecteerd (voorgedefinieerd in een items list). Deze zorgt ervoor dat een button te voorschijn haalt waarbij je een MS Access Database kunt inlezen. Vervolgens verschijnt er nog een comboBox. Deze zou alle alle tabellen weer moeten geven die in deze database bevinden. Na even zoeken kwam ik op getschema() uit. Nu heb ik dit stukje code ervoor geschreven. Het enigste probleem is hij geeft alleen maar System.Data.DataRow weer. Hoe kan ik er het beste voor zorgen dat dit event de juiste metadata uit de DB leest.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int i = 0;
            DataTable table = new DataTable();
            richTextBoxquery.Enabled = false;
            table = myConnection.GetSchema();
            if (table.Rows.Count > 1)
            {
                do
                {
                    comboBox2.Items.Add(table.Rows[i]);
                    i++;
                }
                while (i < table.Rows.Count);
            }
            else comboBox2.Items.Add(table.Rows);


Wat doe ik hierboven verkeerd?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 12:01

mulder

ik spuug op het trottoir

Omdat je de het object Row toont. De ToString van dat object returned de Typename.

oogjes open, snaveltjes dicht


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Ik zou overigens de OleDb driver gebruiken en dan GetOleDbSchemaTable.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:46
Je moet aangeven wat je uit die Row wilt tonen. Zoals Don Facundo al zegt, voeg je gewoon de rij zelf toe, je moet ook nog aangeven welk veld je moet tonen.
Bv:
code:
1
table.Rows[i][0]


Maareh, ik denk niet dat GetSchema doet wat jij verwacht. :)

[ Voor 16% gewijzigd door whoami op 12-05-2006 09:28 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op vrijdag 12 mei 2006 @ 09:28:
Je moet aangeven wat je uit die Row wilt tonen. Zoals Don Facundo al zegt, voeg je gewoon de rij zelf toe, je moet ook nog aangeven welk veld je moet tonen.
Bv:
code:
1
table.Rows[i][0]


Maareh, ik denk niet dat GetSchema doet wat jij verwacht. :)
Ik had al eerder de ToString functie gebruikt, maar dat geeft in mijn ComboBox alleen maar de tekstMetadataCollections.

Even duidelijk maken wat ik wil met Getschema().

Ik wil een lijst met tabellen weergeven in mijn comboBox. Dat moet toch niet zo moeilijk zijn. Ik hoef alleen maar de tabellen niet eens de inhoud, die wordt later in mijn grid weergegeven. Misschien kom ik ook wel een beetje als leek over, maar ik ben nu pas een beetje in C# aan het komen. (ik haatte vroeger om te programmeren, gelukkig valt dat nu waarrempel erg mee! :P)

Verwijderd

Topicstarter
EfBe schreef op vrijdag 12 mei 2006 @ 09:28:
Ik zou overigens de OleDb driver gebruiken en dan GetOleDbSchemaTable.
Wat ik gelezen heb zou de native driver inderdaad sneller werken, maar komt dat later pas aan de orde. Wat ik nu doe is een functie schrijven, die gewoon myConnection als object pakt. Dat het nu nog ODBC is, vind ik niet zo belangrijk.

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:46
Hmm, ik denk dat ik me in die GetSchema vergist heb.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op vrijdag 12 mei 2006 @ 09:43:
Hmm, ik denk dat ik me in die GetSchema vergist heb.
Hmmm wat dacht jij dan, dat GetSchema deed dan?

Verwijderd

Topicstarter
Ik heb nog even zitten pielen maar ik kom er nog niet echt uit. Hij blijft maar MetaDataCollections uitspugen ook al gebruik ik ToString in de getSchema() functie.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 12:01

mulder

ik spuug op het trottoir

Dat klopt precies. Je moet juist niet de ToString van het Row object gebruiken (de combobox doet dat onderwater) Je moet de waarde van de Cell uit de Row opvragenl, zoals whoami je al liet zien. Misschien een voorbeeld bijpakken? MSDN?

[ Voor 24% gewijzigd door mulder op 12-05-2006 11:58 ]

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Ik heb whoami's raad opgevolgd en ik ben eruit. Ik krijg een lijst met tabellen, maar nu staat er in die lijst een aantal waarden dubbel. Nu heb ik al geprobeerd om de dubbele waarden eruit te halen maar dat schijnt niet echt te werken.

Hoe kan ik dat het beste doen? Door een if statement en de de huidige rij vergelijken met de vorige? Of is er een betere oplossing hiervoor. Enig idee?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 12:01

mulder

ik spuug op het trottoir

Misschien moet je je afvragen waarom er dubbelen instaan en of het wel dubbelen zijn. http://msdn2.microsoft.com/en-us/library/ms254501.aspx

oogjes open, snaveltjes dicht

Pagina: 1