以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  c# SQLServer中获得当前数据库的所有表  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=84646)


--  作者:卷积内核
--  发布时间:5/8/2010 8:26:00 AM

--  c# SQLServer中获得当前数据库的所有表
如果您的数据库系统是SQLServer,就可以使用如下的方式来获得当前数据库的所有表:
         private void GetTables_SystemTable()
          {
             //打开连接
             string strConnectionString=System.Configuration.ConfigurationSettings.AppSettings ["ConnectionString"];
             sqlcn=new SqlConnection(strConnectionString);
             sqlcn.Open();
             //使用信息架构视图
             SqlCommand sqlcmd=new SqlCommand("SELECT OBJECT_NAME (id) FROM sysobjects WHERE xtype = 'U' AND OBJECTPROPERTY (id, 'IsMSShipped') = 0",sqlcn);
             SqlDataReader dr=sqlcmd.ExecuteReader();
             while(dr.Read())
              {
                 MessageBox.Show(dr.GetString(0));
             }
         }

6、使用SQLServer的存储过程"sp_tables"
下面是"盛国军"朋友提出的使用存储过程的方法的补充代码。
         public void GetTables_StoredProcedure()
          {
             //处理OleDbConnection
             string strConnectionString=@"Integrated Security=SSPI;Data Source=HBXP;Initial Catalog=Test;Provider=SQLOLEDB.1";
             OleDbConnection cn=new OleDbConnection(strConnectionString);
             cn.Open();
             //执行存储过程
             OleDbCommand cmd=new OleDbCommand("sp_tables",cn);
             cmd.CommandType=CommandType.StoredProcedure;
             OleDbDataReader dr= cmd.ExecuteReader();
             while(dr.Read())
              {
                 MessageBox.Show(dr["TABLE_NAME"].ToString());
             }
         }

总结:获得当前数据库中所有表的方法还不止,本人列出的这些,希望以上方法能够起到抛砖引玉的作用。以上的这些方法各有各的优缺点,希望大家能够灵活的应该,并且希望能够将发现的新的方法告知我,谢谢。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms