c# - 如何通过ms访问db并获取表列表?

时间:2012-02-23 10:04:04

标签: c#

我将数据从ms访问数据库复制到像这样的SQL服务器......

string sSQLTable = table;
string myExcelDataQuery = "Select * from " + sSQLTable;
string sSqlConnectionString = connStr;
string sClearSQL = "DELETE FROM " + sSQLTable;
SqlConnection SqlConn = new SqlConnection(sSqlConnectionString);
SqlCommand SqlCmd = new SqlCommand(sClearSQL, SqlConn);
SqlConn.Open();
SqlCmd.ExecuteNonQuery();
SqlConn.Close();
OleDbConnection OleDbConn = new OleDbConnection(String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", fileName));
OleDbCommand OleDbCmd = new OleDbCommand(myExcelDataQuery, OleDbConn);
OleDbConn.Open();
OleDbDataReader dr = OleDbCmd.ExecuteReader();
SqlBulkCopy bulkCopy = new SqlBulkCopy(sSqlConnectionString);
bulkCopy.DestinationTableName = sSQLTable;
while (dr.Read())
{
    bulkCopy.WriteToServer(dr);
}
OleDbConn.Close();

但这仅适用于一个表名...如何将其放入循环并获取每个表名并调用此函数来复制每个表的数据?

3 个答案:

答案 0 :(得分:2)

这是一些参考。注意:我已经测试过了。你可以关注并尝试。

Get List of Tables in an Access Database - ADO.NET Tutorials

答案 1 :(得分:1)

您可以查看following article,其中说明了如何通过查询架构来检索可用表的列表。

答案 2 :(得分:0)

您可以运行以下查询,但需要具有管理权限。

SELECT Name 来自MSysObjects 哪里 左([名称],1) - ;> “中〜” 和 左([名称],4)<> “中MSys的” 和 输入(1,4,6) 按名称排序