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

rs = st.executeQuery("SELECT name FROM MSysObjects where database <> ''");


通过使用此方法,我尝试从MSysObjects获取所有表名。但是我得到一个错误:


  java.sql.SQLException:[Microsoft] [ODBC Microsoft Access驱动程序]
  记录无法读取;对“ MSysObjects”没有读取权限。


请帮助我解决此错误。

最佳答案

向管理员用户授予SELECT的读取(MSysObjects)权限。

在Access会话中,打开立即窗口(Ctrl + g),构造一个DDL GRANT语句,然后从CurrentProject.Connection执行它

strDdl = "GRANT SELECT ON MSysObjects TO Admin;"
CurrentProject.Connection.Execute strDdl


请注意,该语句必须从ADO执行。因为CurrentProject.Connection是ADO对象,所以它应按书面形式工作。但是,如果尝试使用DAO Execute方法(例如CurrentDb.Execute)或从Access查询设计器中运行,它将失败。

07-24 17:11