1

我目前正在读取 SQL 数据库中的表列表并使用表名填充组合框。我想在同一个列表中包含 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();
4

2 回答 2

4

尝试:

"... where type='U' or type='V'"
于 2009-03-10T23:51:09.047 回答
1

您使用的是什么版本的 SQL Server?如果是 Sql 2000 之后的版本,请不要使用 sysobjects,因为它已被弃用。请改用 sys.objects。

此外,您可能应该使用 SMO(SQL Server 管理对象)而不是编写自己的查询。

于 2009-03-11T00:08:03.373 回答