使用Java Ucanaccess在ms Access中恢复数据和存储的查询
我有一个Access数据库。此数据库包含表和存储的查询。我的目标是使用javaucanaccess(一个JDBC连接器)来使用存储在Access文件中的数据,并使用Jaspersoft创建报告 正常表查询工作:使用Java Ucanaccess在ms Access中恢复数据和存储的查询,java,ms-access,ucanaccess,Java,Ms Access,Ucanaccess,我有一个Access数据库。此数据库包含表和存储的查询。我的目标是使用javaucanaccess(一个JDBC连接器)来使用存储在Access文件中的数据,并使用Jaspersoft创建报告 正常表查询工作: Connection conn = ConnexionUtils.getConnection(); Statement stmt = conn.createStatement(); String query = "select * from Tab_BOU
Connection conn = ConnexionUtils.getConnection();
Statement stmt = conn.createStatement();
String query = "select * from Tab_BOUT";
ResultSet rs = stmt.executeQuery(query);
int cpt = 0;
while ( rs.next() ) {
int numColumns = rs.getMetaData().getColumnCount();
for ( int i = 1 ; i <= numColumns ; i++ ) {
if (i > 1) System.out.print(", ");
String columnValue = rs.getString(i);
System.out.print(columnValue + " " + rs.getMetaData().getColumnName(i));
}
}
查询在Access中工作,但在Java中不工作。有人知道怎么做或者有更好的解决方案吗
编辑:
下面是一个查询示例:Select*from Req\u VENT\u librarie\u nouvelles\u pages\u analysis
access中的真实查询:
SELECT Tab_STO_livraisons.[LIV-TIE_num], Tab_STO_livraisons.LIV_num, Tab_STO_livraisons.LIV_date_livraison, Tab_STO_livraisons.LIV_type_facturation, Tab_STO_détails.[STO-ART_id], Req_BOUT_articles_tous.ART_code_EAN, Tab_STO_détails.STO_nombre, Tab_STO_livraisons.LIV_bdc, Tab_STO_livraisons.LIV_fact_51, Tab_STO_livraisons.LIV_fact_31
FROM (Tab_STO_livraisons INNER JOIN Tab_STO_détails ON (Tab_STO_livraisons.LIV_num = Tab_STO_détails.[STO-LIV_num]) AND (Tab_STO_livraisons.[LIV-TIE_num] = Tab_STO_détails.[STO-TIE_num])) INNER JOIN Req_BOUT_articles_tous ON Tab_STO_détails.[STO-ART_id] = Req_BOUT_articles_tous.ART_code
ORDER BY Tab_STO_livraisons.[LIV-TIE_num], Tab_STO_livraisons.LIV_num, Tab_STO_détails.[STO-ART_id];
以及错误消息:
net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc:::3.0.4用户缺少权限或找不到对象:请求\u事件\u库\u新页面\u分析
位于net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:211)
查看view.QueryData.main(QueryData.java:32)
原因:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:请求\事件\库\新页面\分析
位于org.hsqldb.jdbc.jdbcuti.sqlException(未知源)
位于org.hsqldb.jdbc.jdbcuti.sqlException(未知源)
位于org.hsqldb.jdbc.JDBCStatement.fetchResult(未知源)
位于org.hsqldb.jdbc.JDBCStatement.executeQuery(未知源)
位于net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:208)
... 还有一个
原因:org.hsqldb.hsqldb异常:用户缺少权限或找不到对象:请求\u事件\u库\u新页面\u分析
位于org.hsqldb.error.error.error(未知来源)
位于org.hsqldb.error.error.error(未知来源)
位于org.hsqldb.SchemaManager.getTable(未知源)
位于org.hsqldb.ParserDQL.readTableName(未知源)
位于org.hsqldb.ParserDQL.readTableOrSubquery(未知源)
位于org.hsqldb.ParserDQL.XreadTableReference(未知源)
位于org.hsqldb.ParserDQL.XreadFromClause(未知源)
位于org.hsqldb.ParserDQL.XreadTableExpression(未知源)
位于org.hsqldb.ParserDQL.XreadQuerySpecification(未知源)
位于org.hsqldb.ParserDQL.XreadSimpleTable(未知源)
位于org.hsqldb.ParserDQL.XreadQueryPrimary(未知源)
位于org.hsqldb.ParserDQL.XreadQueryTerm(未知源)
位于org.hsqldb.ParserDQL.XreadQueryExpressionBody(未知源)
位于org.hsqldb.ParserDQL.XreadQueryExpression(未知源)
位于org.hsqldb.ParserDQL.compileCursorSpecification(未知源)
位于org.hsqldb.ParserCommand.compilePart(未知源)
位于org.hsqldb.ParserCommand.compileStatements(未知源)
位于org.hsqldb.Session.executeDirectStatement(未知源)
位于org.hsqldb.Session.execute(未知源)
... 4更多
我的一些视图正在查询MySQL数据库。那会是个大问题吗
对。UCanAccess可以使用Access链接表(指向另一个Access数据库中的表的链接表),但不能使用ODBC链接表(指向ODBC数据源中的表的链接表,如MySQL或SQL Server)
我的一些视图正在查询MySQL数据库。那会是个大问题吗
对。UCanAccess可以处理Access链接表(指向另一个Access数据库中的表的链接表),但不能处理ODBC链接表(指向ODBC数据源中的表的链接表,如MySQL或SQL Server)。我的英语不是很好,我试着将“Requête Access”翻译成查询,但我认为我的“RQT_存储”实际上是您所称的“视图”,请您的问题显示您正在使用的实际SQL语句(例如,
SELECT*FROM RQT_STORED
…),以及您尝试运行时收到的错误消息(或者更好的是,完整堆栈跟踪)。UCanAccess确实打算支持(大多数)已保存选择查询,因此您的查询可能有一些特殊之处。请确保您使用的是最新版本的UCanAccess(当前版本为3.0.4)。值得一提的是,我刚刚尝试了SELECT*FROM RQT_storaged
,使用的是从您的问题中逐字复制的查询,UCanAccess 3.0.4没有任何抱怨。@GordThompson,它实际上仍然不起作用。我编辑了我的第一篇文章!为了获取信息,我的一些视图正在查询MySQL数据库。这会是一个大问题吗?我的英语不太好t good,我尝试将“Requête Access”转换为查询,但我认为我的“RQTêu存储”实际上就是您所说的“视图”,请您的问题显示您正在使用的实际SQL语句(例如,SELECT*FROM RQTêu存储的
…)和错误消息(或者更好,完整的堆栈跟踪)您在尝试运行时收到的。UCanAccess确实打算支持(大多数)已保存的SELECT查询,因此您的查询可能有一些特殊之处。另外,请确保您使用的是最新版本的UCanAccess(当前版本为3.0.4)。值得一提的是,我刚刚尝试了SELECT*FROM RQT_storaged
,使用的是从您的问题中逐字复制的查询,UCanAccess 3.0.4没有任何抱怨。@GordThompson,它实际上仍然不起作用。我编辑了我的第一篇文章!有关信息,我的一些视图正在查询MySQL数据库。这会是一个大问题吗?
SELECT Tab_STO_livraisons.[LIV-TIE_num], Tab_STO_livraisons.LIV_num, Tab_STO_livraisons.LIV_date_livraison, Tab_STO_livraisons.LIV_type_facturation, Tab_STO_détails.[STO-ART_id], Req_BOUT_articles_tous.ART_code_EAN, Tab_STO_détails.STO_nombre, Tab_STO_livraisons.LIV_bdc, Tab_STO_livraisons.LIV_fact_51, Tab_STO_livraisons.LIV_fact_31
FROM (Tab_STO_livraisons INNER JOIN Tab_STO_détails ON (Tab_STO_livraisons.LIV_num = Tab_STO_détails.[STO-LIV_num]) AND (Tab_STO_livraisons.[LIV-TIE_num] = Tab_STO_détails.[STO-TIE_num])) INNER JOIN Req_BOUT_articles_tous ON Tab_STO_détails.[STO-ART_id] = Req_BOUT_articles_tous.ART_code
ORDER BY Tab_STO_livraisons.[LIV-TIE_num], Tab_STO_livraisons.LIV_num, Tab_STO_détails.[STO-ART_id];