“MSysObjects”没有读取权限

use*_*782 1 java ms-access ms-access-2007 jakarta-ee

我想在我的项目中使用 MS Access。我尝试与这段代码集成。

rs = st.executeQuery("SELECT name FROM MSysObjects where database <> ''");
Run Code Online (Sandbox Code Playgroud)

通过使用它,我尝试从 中获取所有表名MSysObjects。但我收到一个错误:

java.sql.SQLException:[Microsoft][ODBC Microsoft Access Driver] 无法读取记录;没有“MSysObjects”的读取权限。

请帮我解决这个错误。

Han*_*sUp 5

授予管理员用户 read( SELECT) 权限MSysObjects

在 Access 会话中,打开立即窗口 ( Ctrl+ g),构造 DDLGRANT语句并从CurrentProject.Connection

strDdl = "GRANT SELECT ON MSysObjects TO Admin;"
CurrentProject.Connection.Execute strDdl
Run Code Online (Sandbox Code Playgroud)

请注意,该语句必须从 ADO 执行。它应该像编写的那样工作,因为它CurrentProject.Connection是一个 ADO 对象。Execute但是,如果尝试使用 DAO方法(例如CurrentDb.Execute或从 Access 查询设计器运行时),它将失败。