Domanda

Attualmente sto leggendo un elenco di tabelle in un database SQL e popolando un comboBox con i nomi delle tabelle. Voglio includere le viste SQL nella stessa lista. Il tipo di oggetto per le tabelle è "U" e per le viste è "V". Come modificare la linea OdbcCommand per recuperare sia U che V? Grazie.

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();
È stato utile?

Soluzione

Prova:

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

Altri suggerimenti

Quale versione di SQL Server stai usando? Se è passato oltre Sql 2000, non utilizzare sysobjects perché è stato deprecato. Utilizzare invece sys.objects.

Probabilmente dovresti usare SMO (SQL Server Management Objects) invece di scrivere la tua query.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top