得到Access数据库中的所有表名
实际开发中,我们会遇到很多问题.有些问题可能以前遇到过,只是没有将解决问题的方法写下来,到后来再碰见时也便忘记了.因此造成了时间与经济上的浪费.如果我们能够抽点时间将解决问题的方法写下来,我想无论是对于工作还是对于个人的成长都会有一定的好处.
下面是本人得到Access数据库中的所有表名的解决方法,可能不够完善,希望大家能够指正.原与大家相互学习,共同进步.
 1 using System;
using System;
2 using System.Data;
using System.Data;
3 using System.Data.OleDb;
using System.Data.OleDb;
4
5 namespace Test
namespace Test
6 {
{
7 public class DataOle
    public class DataOle
8 {
    {
9 /// <summary>
        /// <summary>
10 /// 返回Mdb数据库中所有表表名
        /// 返回Mdb数据库中所有表表名
11 /// </summary>
        /// </summary>
12 /// <param name="strDbPath">Access数据文件路径</param>
        /// <param name="strDbPath">Access数据文件路径</param>
13 /// <returns>表名数组</returns>
        /// <returns>表名数组</returns>
14 public static string[] GetShemaTable(string strDbPath)
        public static string[] GetShemaTable(string strDbPath)
15 {
        {
16 //创建OleDb数据库连接
            //创建OleDb数据库连接
17 OleDbConnection pOleConn;
            OleDbConnection pOleConn; 
18
19 //设置数据连接
            //设置数据连接
20 pOleConn=new OleDbConnection();
            pOleConn=new OleDbConnection();
21 pOleConn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +strDbPath ;
            pOleConn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +strDbPath ;
22 pOleConn.Open();
            pOleConn.Open();
23
24 try
            try
25 {
            {
26 //获取数据表
                //获取数据表
27 DataTable shemaTable=pOleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});
                DataTable shemaTable=pOleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});
28 
                
29 int n=shemaTable.Rows.Count ;
                int n=shemaTable.Rows.Count ;
30 string[] strTable=new string[n];
                string[] strTable=new string[n];
31 int m=shemaTable.Columns.IndexOf("TABLE_NAME");
                int m=shemaTable.Columns.IndexOf("TABLE_NAME");
32
33 for(int i=0;i<n;i++)
                for(int i=0;i<n;i++)
34 {
                {
35 DataRow m_DataRow=shemaTable.Rows[i];
                    DataRow m_DataRow=shemaTable.Rows[i];
36 strTable[i]=m_DataRow.ItemArray.GetValue(m).ToString();
                    strTable[i]=m_DataRow.ItemArray.GetValue(m).ToString();
37 }
                }
38 
                
39 return strTable;
                return strTable;
40 }
            }
41 catch(OleDbException ex)
            catch(OleDbException ex)
42 {
            {
43 Console.WriteLine("指定的限制集无效!");
                Console.WriteLine("指定的限制集无效!");
44 Console.WriteLine(ex.Message);
                Console.WriteLine(ex.Message);
45 return null;
                return null;
46 }
            }    
47 finally
            finally
48 {
            {
49 pOleConn.Close();
                pOleConn.Close();
50 pOleConn.Dispose();
                pOleConn.Dispose();
51 }
            }
52 }
        }
53 }
    }
54
55
56 public class AppMain
    public class AppMain
57 {
    {
58 public static void Main()
        public static void Main()
59 {
        {
60 string[] TableName=DataOle.GetShemaTable(@"C:\1.mdb");
            string[] TableName=DataOle.GetShemaTable(@"C:\1.mdb");
61
62 if(TableName!=null)
            if(TableName!=null)
63 {
            {
64 //Write each table name
                //Write each table name
65 for(int i=0;i<TableName.Length;i++)
                for(int i=0;i<TableName.Length;i++)
66 {
                {
67 Console.WriteLine("DataTale {0} Name is {1}",i,TableName[i]);
                    Console.WriteLine("DataTale {0} Name is {1}",i,TableName[i]);
68 }
                }
69 }
            }
70
71 Console.WriteLine("OK");
            Console.WriteLine("OK");
72 }
        }
73 }
    }
74 }
}
 using System;
using System;2
 using System.Data;
using System.Data;3
 using System.Data.OleDb;
using System.Data.OleDb;4

5
 namespace Test
namespace Test6
 {
{7
 public class DataOle
    public class DataOle8
 {
    {9
 /// <summary>
        /// <summary>10
 /// 返回Mdb数据库中所有表表名
        /// 返回Mdb数据库中所有表表名11
 /// </summary>
        /// </summary>12
 /// <param name="strDbPath">Access数据文件路径</param>
        /// <param name="strDbPath">Access数据文件路径</param>13
 /// <returns>表名数组</returns>
        /// <returns>表名数组</returns>14
 public static string[] GetShemaTable(string strDbPath)
        public static string[] GetShemaTable(string strDbPath)15
 {
        {16
 //创建OleDb数据库连接
            //创建OleDb数据库连接17
 OleDbConnection pOleConn;
            OleDbConnection pOleConn; 18

19
 //设置数据连接
            //设置数据连接20
 pOleConn=new OleDbConnection();
            pOleConn=new OleDbConnection();21
 pOleConn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +strDbPath ;
            pOleConn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +strDbPath ;22
 pOleConn.Open();
            pOleConn.Open();23

24
 try
            try25
 {
            {26
 //获取数据表
                //获取数据表27
 DataTable shemaTable=pOleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});
                DataTable shemaTable=pOleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});28
 
                29
 int n=shemaTable.Rows.Count ;
                int n=shemaTable.Rows.Count ;30
 string[] strTable=new string[n];
                string[] strTable=new string[n];31
 int m=shemaTable.Columns.IndexOf("TABLE_NAME");
                int m=shemaTable.Columns.IndexOf("TABLE_NAME");32

33
 for(int i=0;i<n;i++)
                for(int i=0;i<n;i++)34
 {
                {35
 DataRow m_DataRow=shemaTable.Rows[i];
                    DataRow m_DataRow=shemaTable.Rows[i];36
 strTable[i]=m_DataRow.ItemArray.GetValue(m).ToString();
                    strTable[i]=m_DataRow.ItemArray.GetValue(m).ToString();37
 }
                }38
 
                39
 return strTable;
                return strTable;40
 }
            }41
 catch(OleDbException ex)
            catch(OleDbException ex)42
 {
            {43
 Console.WriteLine("指定的限制集无效!");
                Console.WriteLine("指定的限制集无效!");44
 Console.WriteLine(ex.Message);
                Console.WriteLine(ex.Message);45
 return null;
                return null;46
 }
            }    47
 finally
            finally48
 {
            {49
 pOleConn.Close();
                pOleConn.Close();50
 pOleConn.Dispose();
                pOleConn.Dispose();51
 }
            }52
 }
        }53
 }
    }54

55

56
 public class AppMain
    public class AppMain57
 {
    {58
 public static void Main()
        public static void Main()59
 {
        {60
 string[] TableName=DataOle.GetShemaTable(@"C:\1.mdb");
            string[] TableName=DataOle.GetShemaTable(@"C:\1.mdb");61

62
 if(TableName!=null)
            if(TableName!=null)63
 {
            {64
 //Write each table name
                //Write each table name65
 for(int i=0;i<TableName.Length;i++)
                for(int i=0;i<TableName.Length;i++)66
 {
                {67
 Console.WriteLine("DataTale {0} Name is {1}",i,TableName[i]);
                    Console.WriteLine("DataTale {0} Name is {1}",i,TableName[i]);68
 }
                }69
 }
            }70

71
 Console.WriteLine("OK");
            Console.WriteLine("OK");72
 }
        }73
 }
    }74
 }
} 
                    
                 


 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号