如何使用ADO从MS Access数据库中提取表名

ari*_*aly 0 c# sql database ado.net

我尝试使用此代码:

OleDbConnection c = new OleDbConnection(con);
string SQLS = "SELECT MSysObjects.Name FROM MSysObjects WHERE MSysObjects.Name Not Like 'MsyS*' AND MSysObjects.Type=1 ORDER BY MSysObjects.Name";
OleDbDataAdapter da = new OleDbDataAdapter(SQLS, c);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
Run Code Online (Sandbox Code Playgroud)

但我得到了这个例外:

记录无法读取; 没有'MSysObjects'的读取权限.

现在,我需要将整个ms-access数据库传输到mysql programmaticaly,因此我需要数据库名称.我如何解决这个错误?

ari*_*aly 6

using System;
using System.Data;
using System.Data.OleDb;

public class DatabaseInfo {    
    public static void Main () { 
        String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=.\\Employee.mdb";
        OleDbConnection con = new OleDbConnection(connect);
        con.Open();  
        Console.WriteLine("Made the connection to the database");

        Console.WriteLine("Information for each table contains:");
        DataTable tables = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});

        Console.WriteLine("The tables are:");
            foreach(DataRow row in tables.Rows) 
                Console.Write("  {0}", row[2]);


        con.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

///取自 http://www.java2s.com/Code/CSharp/Database-ADO.net/Getalltablenames.htm