2013-10-10 82 views
-2

我試圖通過JDBC對Oracle數據庫執行查詢。我已經驗證它在SQL Developer中有效。 但是當我通過JDBC運行它,我得到JDBC:無法創建語句

ps = con.prepareStatement(sql.toString()); 

我已經嘗試了不同的語句和SQL查詢,在JDBC在SQL開發商鑽不作爲全部工作的「空」值。另外,我沒有得到任何堆棧跟蹤調試到..

查詢1

 sql.append("SELECT * FROM Tabel WHERE (ID1=" + id + " AND ORG=" + org + ") OR (ID2=" + id + " AND ORG=" + org + ")"); 

QUERY2

sql.append("SELECT * FROM Tabel WHERE (ID1=" + id + " OR ID2=" + id + ") AND ORG=?" + org); 

QUERY3

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()); 
} 

//亨裏克

+0

正是你試圖執行?據我看到你只是設置參數值。 – user1455836

+2

在追加到它之前是什麼'sql'? –

+4

查詢3是很好的做法,它應該可以工作 –

回答

1

簡單地用下面的方式

ps = con.prepareStatement("SELECT * FROM Tabel WHERE (ID1=? OR ID2=?) AND ORG=?"); 
ps.setString(1, id); 
ps.setString(2, id); 
ps.setString(3, org) 
ResultSet rs=ps.executeQuery(); 
while(rs.next()) 
{ 
//use your code to retrieve like rs.getString(1); 
}