C # Lettura di tabelle e viste SQL
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();
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