3echo

心有多大,世界便有多大!
posts - 81, comments - 266, trackbacks - 11, articles - 21
  博客园 :: 首页 ::  :: 联系 :: 订阅 订阅 :: 管理

得到Access数据库中的所有表名

Posted on 2006-11-09 14:28 3echo 阅读(571) 评论(2)  编辑 收藏 网摘

得到Access数据库中的所有表名

实际开发中,我们会遇到很多问题.有些问题可能以前遇到过,只是没有将解决问题的方法写下来,到后来再碰见时也便忘记了.因此造成了时间与经济上的浪费.如果我们能够抽点时间将解决问题的方法写下来,我想无论是对于工作还是对于个人的成长都会有一定的好处.

下面是本人得到Access数据库中的所有表名的解决方法,可能不够完善,希望大家能够指正.原与大家相互学习,共同进步.

 

 1using System;
 2using System.Data;
 3using System.Data.OleDb;
 4
 5namespace Test
 6{
 7    public class DataOle
 8    {
 9        /// <summary>
10        /// 返回Mdb数据库中所有表表名
11        /// </summary>
12        /// <param name="strDbPath">Access数据文件路径</param>
13        /// <returns>表名数组</returns>

14        public static string[] GetShemaTable(string strDbPath)
15        {
16            //创建OleDb数据库连接
17            OleDbConnection pOleConn; 
18
19            //设置数据连接
20            pOleConn=new OleDbConnection();
21            pOleConn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +strDbPath ;
22            pOleConn.Open();
23
24            try
25            {
26                //获取数据表
27                DataTable shemaTable=pOleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});
28                
29                int n=shemaTable.Rows.Count ;
30                string[] strTable=new string[n];
31                int m=shemaTable.Columns.IndexOf("TABLE_NAME");
32
33                for(int i=0;i<n;i++)
34                {
35                    DataRow m_DataRow=shemaTable.Rows[i];
36                    strTable[i]=m_DataRow.ItemArray.GetValue(m).ToString();
37                }

38                
39                return strTable;
40            }

41            catch(OleDbException ex)
42            {
43                Console.WriteLine("指定的限制集无效!");
44                Console.WriteLine(ex.Message);
45                return null;
46            }
    
47            finally
48            {
49                pOleConn.Close();
50                pOleConn.Dispose();
51            }

52        }

53    }

54
55
56    public class AppMain
57    {
58        public static void Main()
59        {
60            string[] TableName=DataOle.GetShemaTable(@"C:\1.mdb");
61
62            if(TableName!=null)
63            {
64                //Write each table name
65                for(int i=0;i<TableName.Length;i++)
66                {
67                    Console.WriteLine("DataTale {0} Name is {1}",i,TableName[i]);
68                }

69            }

70
71            Console.WriteLine("OK");
72        }

73    }

74}

Feedback

#1楼    回复  引用    

2006-11-29 23:00 by TJBLOG [未注册用户]
seen
欢迎回访我的个人BLOG,A
阅读了你的这篇文章,
My blog:
http://blog.run2me.com/jiangyouxiaozi/

#2楼    回复  引用  查看    

2007-04-08 16:12 by 火冰      
不错,收藏




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: