我正在读取SQL数据库中的表列表,并使用表名填充comboBox。我想在同一个列表中包含SQL视图。表格的sysobjects类型为“U”,视图为“V”。如何更改OdbcCommand行以检索U和V?感谢。
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();
答案 0 :(得分:4)
尝试:
"... where type='U' or type='V'"
答案 1 :(得分:1)
您使用的是哪个版本的SQL Server?如果它是Sql 2000之后的任何内容,请不要使用sysobjects,因为它已被弃用。改为使用sys.objects。
此外,您应该使用SMO(SQL Server管理对象)而不是编写自己的查询。