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

得到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}
原文地址:https://www.cnblogs.com/3echo/p/555335.html