2012-07-27 63 views
0

数据库名称是ONLINEEXAM错误而收集来自数据库C#和asp.net表名

我在分贝数表,我想列出一些表名在下拉列表开头字母“设置%”在asp.net 。

我使用下面的代码,我得到的错误:无效的对象名称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 { } 
} 
+0

尝试运行查询W/O DB这样的SELECT * FROM系统对象,其中名称,如“设置%” – 2012-07-27 18:19:53

+0

什么名字你的连接字符串? – Pleun 2012-07-27 18:21:08

+0

@WaqarJanjua酷...它的工作真的...感谢吨! – 2012-07-27 18:47:10

回答

1

可能是你正在运行的查询对不同的数据库,运行在SQL Server查询,以检查它。 也试试这个

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

,或者使用它来获取所有表

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

看一看验证用户ID可以访问sysobjects表。 假设你正在运行SQL2005或更高版本,你也可以看看INFORMATION_SCHEMA架构和审查TABLES观点:

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