得到Access数据库中的所有表名
实际开发中,我们会遇到很多问题.有些问题可能以前遇到过,只是没有将解决问题的方法写下来,到后来再碰见时也便忘记了.因此造成了时间与经济上的浪费.如果我们能够抽点时间将解决问题的方法写下来,我想无论是对于工作还是对于个人的成长都会有一定的好处.
下面是本人得到Access数据库中的所有表名的解决方法,可能不够完善,希望大家能够指正.原与大家相互学习,共同进步.
1
using System;
2
using System.Data;
3
using System.Data.OleDb;
4
5
namespace 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
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74
