2013-10-10 3 views
-2

Я пытаюсь выполнить запрос через JDBC для Oracle DB. Я проверил, что он работает в SQL Developer. Но когда я запускаю его через JDBC Я получаю «пустое» значение наJDBC: Не удалось создать оператор

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

Я пробовал различные заявления и запросы SQL, все работы в проявителе SQL боры Неправительственного в JDBC. Кроме того, я не получаю трассировку стека для отладки на ..

Query1

 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); 
} 
Смежные вопросы