質問

現在、SQLデータベース内のテーブルのリストを読み取り、テーブル名をコンボボックスに入力しています。同じリストにSQLビューを含めたい。テーブルのsysobjectsタイプは「U」で、ビューのsysobjectsタイプは「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();
役に立ちましたか?

解決

試してください:

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

他のヒント

使用しているSQL Serverのバージョンは何ですか? Sql 2000を過ぎている場合は、廃止されているためsysobjectsを使用しないでください。代わりにsys.objectsを使用してください。

また、独自のクエリを作成する代わりに、おそらくSMO(SQL Server管理オブジェクト)を使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top