知识大全 c#获取数据库中所有表名称的方法

Posted 视图

篇首语:幽映每白日,清辉照衣裳。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 c#获取数据库中所有表名称的方法相关的知识,希望对你有一定的参考价值。

  在很多情况下我们需要将指定的数据库中的所有表都列出来 在使用c#进行软件开发时 我们有哪些方法可是实现这个目的呢?本人对此进行概要的总结 有以下 中方式可以实现这个目的

  1 sqldmo

  SQLDMO是操作SQLServer的理想的方式 如果您的数据库是SQLServer就可以考虑使用这种方式 在C#中使用SQLDMO需要添加SQLDMO的引用 然后在当前的文件中using SQLDMO;即可以使用SQLDMO SQLDMO的对象模型大家可以在SQLServer的帮助中获得

  private void GetTabels_DMO(string strServerName string strUser string strPWD string strDatabase)

  

  SQLDMO SQLServer Server = new SQLDMO SQLServerClass();

  //连接到服务器

  Server Connect(strServerName strUser strPWD);

  //对所有的数据库遍历 获得指定数据库

  for(int i= ;i<Server Databases Count;i++)

  

  //判断当前数据库是否是指定数据库

  if(Server Databases Item(i+ dbo ) Name ==strDatabase)

  

  //获得指定数据库

  SQLDMO _Database db= Server Databases Item(i+ dbo );

  //获得指定数据库中的所有表

  for(int j= ;j<db Tables Count;j++)

  

  MessageBox Show(db Tables Item(j+ dbo ) Name);

  

  

  

  

  2 adox

  adox是ado Extensions for DDL and Security 是微软对ADO技术的扩展 使用它我们可以操作数据库的结构 它是一个组件 估计以后在ADO NET中会增加ADOX的一些功能 如果大家需要ADOX的一些资料 我可以提供 下面的一个例子就是使用ADOX来获得当前数据库的所有表

  private void GetTables_ADOX()

  

  //ADO的数据库连接

  ADODB ConnectionClass cn=new ADODB ConnectionClass();

  string ConnectionString= Provider=SQLOLEDB ;Integrated Security=SSPI;Initial Catalog=Test;Data Source=HBXP ;

  cn Open(ConnectionString sa );

  //操作ADOX的Catalog对象

  CatalogClass cat=new CatalogClass();

  cat ActiveConnection=cn;

  for(int i= ;i<cat Tables Count;i++)

  

  MessageBox Show(cat Tables[i] Name);

  

  

  注意 在上面的代码中cat ActiveConnection不能是ADO Net中的Connection 而应该是ADO的Connection

  3 中的oledbconnection

  在c#中我们首先会考虑使用来解决问题 如果没有方法才会考虑使用adox或者sqldmo来解决这个问题 虽然adox和sqldmo也能够解决这个问题 但是他们毕竟是组件 中使用起来和在平台会有一些差异 不是很顺手 下面的示例就显示了在中的oledbconnection的方法getoledbschematable来获得数据库的架构 大家可以在msdn中看到这个方法的说明

  public DataTable GetOleDbSchemaTable(

  Guid schema

  object[] restrictions);

  参数

  schema

  OleDbSchemaGuid 的值之一 它指定要返回的架构表

  restrictions

  限制值的 Object 数组 这些值按照限制列的顺序来应用 即 第一个限制值应用于第一个限制列 第二个限制值应用于第二个限制列 依此类推

  返回值

  包含请求的架构信息的 DataTable

  更多的信息大家可以查询MSDN 下面将示例如何实现

  private void GetTables_ADONET()

  

  //处理OleDbConnection

  string mailto:strConnectionString=@% Integrated Security=SSPI;Data Source=HBXP;Initial Catalog=Test;Provider=SQLOLEDB ;

  OleDbConnection cn=new OleDbConnection(strConnectionString);

  cn Open();

  //利用OleDbConnection的GetOleDbSchemaTable来获得数据库的结构

  DataTable dt = cn GetOleDbSchemaTable(OleDbSchemaGuid Tables new object[] null null null TABLE );

  foreach (DataRow dr in  dt Rows)

  

  MessageBox Show((String)dr[ TABLE_NAME ]);

  

  

  4 信息架构视图

  信息架构视图是sql 标准中定义的架构视图 这些视图独立于系统表 信息架构视图的最大优点是 即使我们对系统表进行了重要的修改 应用程序也可以正常地使用这些视图进行访问 下面的示例使用信息架构视图来工作

  private void GetTables_INFORMATION_SCHEMA()

  

  //打开连接

  string strConnectionString=System Configuration ConfigurationSettings AppSettings[ ConnectionString ];

  sqlcn=new SqlConnection(strConnectionString);

  sqlcn Open();

  //使用信息架构视图

  SqlCommand sqlcmd=new SqlCommand( SELECT TABLE_NAME FROM INFORMATION_SCHEMA TABLES WHERE TABLE_TYPE = BASE TABLE sqlcn);

  SqlDataReader dr=sqlcmd ExecuteReader();

  while(dr Read())

  

  MessageBox Show(dr GetString( ));

  

  

  5 使用系统表

  如果您的数据库系统是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 ) = sqlcn);

  SqlDataReader dr=sqlcmd ExecuteReader();

  while(dr Read())

  

  MessageBox Show(dr GetString( ));

  

  

   使用sqlserver的存储过程 sp_tables

  下面是 盛国军 朋友提出的使用存储过程的方法的补充代码

  public void GetTables_StoredProcedure()

  

  //处理OleDbConnection

  string mailto:strConnectionString=@% Integrated Security=SSPI;Data Source=HBXP;Initial Catalog=Test;Provider=SQLOLEDB ;

  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());

  

cha138/Article/program/net/201311/13176

相关参考

知识大全 列出SQLSERVER数据库中所有表及字段信息

列出SQLSERVER数据库中所有表及字段信息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  程

知识大全 查询sqlserver所有表并改变其架构

  查询所有的数据库  select[name]from[sysdatabases]orderby[name]  查询一个数据库中的所有表  select[id][name]from[sysobjec

知识大全 C#中路径的几种获取方法及其区别

C#中路径的几种获取方法及其区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  stringst

知识大全 C#中获取程序当前路径的7种常用的方法

C#中获取程序当前路径的7种常用的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  strin

知识大全 数据结构考研分类复习真题 第五章 数组和广义表[40]

  设整数xx…xn已存放在数组A中编写一PASCAL递归过程输出从这n个数中取出所有k个数的所有组合(k<=n)例若A中存放的数是k为则输出结果应为【山东大学五 (分)】  类似本题

知识大全 C#获取IPCONFIG返回值

C#获取IPCONFIG返回值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在我们获取本机局域

知识大全 asp中获取内容中所有图片与获取内容中第一个图片的代码

  复制代码代码如下:cha138/Article/program/Web/201405/30991

知识大全 C#获取机器码

C#获取机器码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ///<summary>

知识大全 MSSQLSERVER中如何快速获取表的记录总数

MSSQLSERVER中如何快速获取表的记录总数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 C#如何快速获取助记码

C#如何快速获取助记码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  希望通过本文能让大家对C#