c#操作access数据库,怎么获得数据库中的所有表名, 并将他返回到一个string[]中。

 我来答
壳大阅读
2011-08-24 · TA获得超过535个赞
知道小有建树答主
回答量:402
采纳率:0%
帮助的人:308万
展开全部
Access有个系统内置表,系统内置表打开办法:

office 2003设置:工具 -> 选项 -> 视图 -> 勾选隐藏对象、系统对象。工具 -> 安全 -> 用户与组的权限 ,在对象名称中选定 MSysObjects ,然后权限中设置其读取权限。

office 2007设置:单击左上角图标 -> Access选项 -> 当前数据库 -> 导航 -> 导航选项 -> 勾选显示隐藏对象,显示系统对象。数据库工具选项卡 -> 用户和权限 -> 用户与组权限,对象类型选择表,对象名称选定MSysObjects,然后勾选“读取数据”权限

还有一种方法可以实现读取Access数据库中所有表:

最终读取的Sql语句为:
SELECT MSysObjects.DateCreate, MSysObjects.DateUpdate,MSysObjects.Name,MSysObjects.Type FROM MSysObjects

剩下的就是读这个Sql语句了。这个会吧
手机用户27710
2011-08-24 · 超过15用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:85.5万
展开全部
public string[] 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, new object[] ...);
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);
return null;
}
finally
{
conn.Close();
conn.Dispose();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-24
展开全部
c#操作access数据库,怎么获得数据库中的所有表名, 并将他返回到一个string[]中。
怎样治疗初期痔疮啊?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式