Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用ADO从MS Access数据库提取表名_C#_Sql_Database_Ado.net - Fatal编程技术网

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

C# 如何使用ADO从MS Access数据库提取表名,c#,sql,database,ado.net,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(SQL

我尝试使用以下代码:

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;
但我有一个例外:

无法读取记录;对“MSysObjects”没有读取权限


现在,我需要将整个ms access数据库传输到mysql programmaticaly,因此我需要数据库名称。我如何克服这个错误

您可以这样访问它:

OleDbConnection conn =
 new OleDbConnection(
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
    "C:\\phycoaide\\phycoaide.mdb;Persist Security Info=False;");

// retrieving schema for a single table
OleDbCommand cmd = new OleDbCommand("taxa", conn);
cmd.CommandType = CommandType.TableDirect;
conn.Open();
OleDbDataReader reader =
 cmd.ExecuteReader(CommandBehavior.SchemaOnly);
DataTable schemaTable = reader.GetSchemaTable();
reader.Close();
conn.Close();
有关更多详细信息,请参阅

编辑: 好的,然后您可以使用如下解决方案检索所有表:然后循环遍历它们

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();
    }
}
///取自
你可以试试。此软件包支持。

如果我不知道数据库的表是什么,我将使用此软件包。很高兴我能提供帮助。如果它真的有用,请将此标记为答案!:-但是我寻求不同的答案…:我假设我不知道这个数据库中表的名称