- 可以使用System.Data.OleDb.OleDbConnection连接Access数据库
然后通过conn.GetSchema读出想要的信息: 包括数据库的表名、字段名、类型
- /// <summary>
- /// 返回Mdb数据库中所有表表名
- /// </summary>
- publicstring[] GetShemaTableName(string database_path, string database_password)
- {
- try
- {
- //获取数据表
- OleDbConnection conn = new OleDbConnection();
- conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:DataBase Password='" + database_password + "Data Source=" + database_path;
- conn.Open();
- DataTable shemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, newobject[] { null, null, null, "TABLE" });
- int n = shemaTable.Rows.Count;
- string[] strTable = new string[n];
- int m = shemaTable.Columns.IndexOf("TABLE_NAME");
- for (int i = 0; i < n; i++)
- {
- DataRow m_DataRow = shemaTable.Rows[i];
- strTable[i] = m_DataRow.ItemArray.GetValue(m).ToString();
- }
- return strTable;
- }
- catch (OleDbException ex)
- {
- MessageBox.Show("指定的限制集无效:/n" + ex.Message);
- returnnull;
- }
- finally
- {
- conn.Close();
- conn.Dispose();
- }
- }
- /// <summary>
- /// 返回某一表的所有字段名
- /// </summary>
- publicstring[] GetTableColumn(string database_path,string varTableName)
- {
- DataTable dt = new DataTable();
- try
- {
- conn = new OleDbConnection();
- conn.ConnectionString = "Provider = Microsoft.Jet.OleDb.4.0;Data Source=" + database_path;
- conn.Open();
- dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, varTableName, null });
- int n = dt.Rows.Count;
- string[] strTable = new string[n];
- int m = dt.Columns.IndexOf("COLUMN_NAME");
- for (int i = 0; i < n; i++)
- {
- DataRow m_DataRow = dt.Rows[i];
- strTable[i] = m_DataRow.ItemArray.GetValue(m).ToString();
- }
- return strTable;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- finally
- {
- conn.Close();
- }
- }