如何从 JDBC 查询中获取所有元素

Posted

技术标签:

【中文标题】如何从 JDBC 查询中获取所有元素【英文标题】:How to get all the element from JDBC query 【发布时间】:2010-09-28 18:33:14 【问题描述】:

你好,

我有这样的查询

final Query contractQuery = cgnDao.getEntityManager().
            createNativeQuery("SELECT k.phrase, ak.type FROM key k INNER JOIN adkey ak USING (key_id) WHERE pck.pub_id =" + pid +" AND pck.c_id =" + campId );

如何从查询中获取每个元素?

其中短语是字符串,类型是枚举

在 Java 中

谢谢

【问题讨论】:

【参考方案1】:

查看this link on the JBoss JPA docs 和this link on java2s。

简而言之,您有一个可以调用 getResultList() 的 Query,它会返回一个可以迭代的 List。看看JPA javadoc。

另外,我建议使用 PreparedStatements,例如

String sqlQuery = "select * from tbl_spaceship where owner = ?";
Query q = entityManager.createNativeQuery(sqlQuery, SpaceShip.class);
q.setParameter( 1, "Han" );
q.getResultList();

优点是 JPA 提供者将负责转义输入值。在这个特定的用例中没有必要,但良好的习惯永远不会受到伤害。

【讨论】:

【参考方案2】:

首先,您不应该使用字符串连接,而应该使用位置参数只有位置参数绑定可移植地用于原生查询)。其次,对于返回标量值的本机查询,结果将是ListOject[]。所以结果可能是这样的:

String sql = "SELECT k.phrase, ak.type " + 
             "FROM key k INNER JOIN adkey ak USING (key_id) " +
             "WHERE pck.pub_id = ?1 AND pck.c_id = ?2";
Query q = em.createNativeQuery(sql);
q.setParameter(1, pubId);
q.setParameter(2, cId);
List<Object[]> results = q.getResultList();

参考文献

JPA 1.0 规范 第 3.6.3 节“命名参数” 第 3.6.6 节“SQL 查询” 第 4.6.4 节“输入参数”

【讨论】:

【参考方案3】:

您可以使用方法的值从结果集中获取枚举实例

enum A 
A.valueOf()

【讨论】:

以上是关于如何从 JDBC 查询中获取所有元素的主要内容,如果未能解决你的问题,请参考以下文章

使用 jdbc 获取允许用户使用的所有表

如何通过JDBC连接Oracle数据库获取表名列表

JDBC - 从 OpenOffice 数据库中获取所有表名

jsp页面前台用jdbc如何获取sql数据库里的数据。

如何使用 JDBC 获取正在运行的语句列表

如何使用 jdbc 从 Oracle 中的结果集中获取模式名称?