【发布时间】:2013-10-10 07:40:06
【问题描述】:
我正在尝试通过 JDBC 对 Oracle DB 执行查询。我已经验证它在 SQL Developer 中工作。 但是当我通过 JDBC 运行它时,我在
上得到一个“null”值ps = con.prepareStatement(sql.toString());
我尝试了不同的语句和 SQL 查询,所有这些都在 SQL 开发人员中工作,而不是在 JDBC 中。另外,我没有任何堆栈跟踪可以调试到..
查询1
sql.append("SELECT * FROM Tabel WHERE (ID1=" + id + " AND ORG=" + org + ") OR (ID2=" + id + " AND ORG=" + org + ")");
查询2
sql.append("SELECT * FROM Tabel WHERE (ID1=" + id + " OR ID2=" + id + ") AND ORG=?" + org);
查询3
sql.append("SELECT * FROM Tabel WHERE (ID1=? OR ID2=?) AND ORG=?");
ps = con.prepareStatement(sql.toString());
ps.setString(1, id);
ps.setString(2, id);
ps.setString(3, org);
代码
try {
log.debug("Creating Query");
StringBuffer sql = new StringBuffer();
sql.append("SELECT * FROM Table WHERE (ID1=? OR ID2=?) AND ORG=?");
log.debug("Query created: " + sql.toString()); //Don't get here
ps = con.prepareStatement(sql.toString());
ps.setString(1, id);
ps.setString(2, id);
ps.setString(3, org);
log.debug("Query Created!!!!");
con = getConnection();
} catch (Exception e) {
log.error("Could not create statement in methodXXX");
//Returns null in e.getMessage()
throw new Exception("Could not create query: " + e.getMessage());
}
//亨里克
【问题讨论】:
-
您到底想在哪里执行?据我所知,您只是设置了参数值。
-
在添加之前
sql是什么? -
查询 3 是很好的做法,它应该可以工作
-
你能展示使用更多代码吗?创建连接等。
-
'SELECT * FROM TabelWHERE ....' 语句中的 Table 和 Where 子句之间应该有空格。