質問
現在、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管理オブジェクト)を使用する必要があります。
所属していません StackOverflow