从Database c#和asp.net收集表名时出错

时间:2012-07-27 18:14:17

标签: c# asp.net sql sql-server database

数据库名称是ONLINEEXAM

我在db中有几个表,我想在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 { }
}

2 个答案:

答案 0 :(得分:1)

可能是您正在针对不同的数据库运行查询,在sql server中运行您的查询来检查它。 也试试这个

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

或使用它来获取所有表格

select * from sys.tables where name like 'Set%'

答案 1 :(得分:0)

查看验证用户ID是否可以访问sysobjects表。 假设您运行的是SQL2005或更高版本,您还可以查看INFORMATION_SCHEMA架构并查看TABLES视图:

Select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE 
from [database.]INFORMATION_SCHEMA.TABLES