0

データベース名はONLINEEXAMです

データベースにいくつかのテーブルがあり、asp.net の Dropdownlist に文字 "set %" で始まるテーブル名をいくつかリストしたいと考えています。

次のコードを使用すると、エラーが発生します: 無効なオブジェクト名 ONLINEEXAM.dbo.sysobjects

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack == false)
    {
        paperset();
    }  
}


private void paperset()
{
    try
    {
        string conn = ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString;
        SqlConnection con = new SqlConnection(conn);
        con.Open();

        SqlCommand cmd = new SqlCommand(
            "select * from ONLINEEXAM.dbo.sysobjects where name like 'Set%'", con);
        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            ListItem item = new ListItem();
            item.Value = dr[0].ToString();
            papersetlist.Items.Add(item);
        }

        dr.Close();
        con.Close();
    }
    catch (System.Exception ex) 
    { 
        MessageBox.Show(ex.Message); 
    }
    finally { }
}
4

2 に答える 2

1

別のデータベースに対してクエリを実行している可能性があります。SQLサーバーでクエリを実行して確認してください。これも試してみてください

SqlCommand cmd = new SqlCommand("select * from sys.objects where name like 'Set%'", con);

またはこれを使用してすべてのテーブルを取得します

select * from sys.tables where name like 'Set%'
于 2012-07-27T18:22:14.927 に答える
0

ユーザー ID がsysobjectsテーブルにアクセスできることを確認してください。SQL2005 以降を実行していると仮定すると、INFORMATION_SCHEMAスキーマを見てTABLESビューを確認することもできます。

Select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE 
from [database.]INFORMATION_SCHEMA.TABLES
于 2012-07-27T18:21:43.937 に答える