如何使用 ADO 从 MS Access 数据库中提取表名
我尝试使用这段代码:
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,因此我需要数据库名称。我该如何解决这个错误?
i tried using this code :
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;
But i got this exception:
Record(s) cannot be read; no read permission on 'MSysObjects'.
Now, i need to transfer the entire ms-access database to mysql programmaticaly, thus i need the database names. How do I work my way around this error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
///取自
http://www.java2s.com/Code/CSharp/Database -ADO.net/Getalltablenames.htm
///taken from
http://www.java2s.com/Code/CSharp/Database-ADO.net/Getalltablenames.htm
您可以这样访问它:
请参阅 http://harborsparrow.blogspot.com/2009/05/c-code-to-get-schema-of-access-table.html 了解更多详细信息。
编辑:
好的,那么您可以使用如下解决方案检索所有表: 如何在 C# 中使用 OleDB 列出 MS Access 文件中的所有查询?,然后循环遍历它们。
You can access it like this:
See http://harborsparrow.blogspot.com/2009/05/c-code-to-get-schema-of-access-table.html for more details.
EDIT:
Ok, so then you can retrieve all the tables using a solution like this: How do I list all the queries in a MS Access file using OleDB in C#? and then loop through them.
您可以尝试 Kros.Utils.MsAccess。此软件包支持 MsAccess 数据库架构。
You can try Kros.Utils.MsAccess. This package has support for MsAccess database schema.