2009-03-10 4 views
1

Ich lese gerade eine Liste von Tabellen in einer SQL-Datenbank ein und beziehe eine ComboBox mit den Tabellennamen. Ich möchte SQL-Ansichten in dieselbe Liste aufnehmen. Der Sysobjects-Typ für Tabellen ist 'U' und für Sichten ist es 'V'. Wie würde ich die OdbcCommand-Zeile ändern, um sowohl U als auch V abzurufen? Vielen Dank.C# SQL-Tabellen und -Ansichten lesen

OdbcConnection cn=getConnection(); 
OdbcCommand cmdList; 
cmdList = new OdbcCommand("select name, user_name(uid) from sysobjects where type='U'",cn); 
cn.Open(); 

     OdbcDataReader reader = cmdList.ExecuteReader(); 
     while (reader.Read()) 
     { 
      for (int i=0;i<reader.FieldCount;i++) 
      { 
       if (!reader.IsDBNull(i)) 
       { 
        if (reader.GetName(i).ToUpper()=="NAME") 
        { 
          comboBoxTables.Items.Add(reader.GetString(i)); 
        } 
       } 
      } 
     } 
cn.Close(); 

Antwort

4

Versuchen:

"... where type='U' or type='V'" 
+0

Warum habe ich das nicht versucht! Vielen Dank –

1

Welche Version von SQL Server verwenden Sie? Wenn es etwas nach Sql 2000 gibt, verwenden Sie Sysobjects nicht, da es veraltet ist. Verwenden Sie stattdessen sys.objects.

Sie sollten wahrscheinlich auch SMO (SQL Server Management Objects) verwenden, anstatt eine eigene Abfrage zu schreiben.