2011-03-03 6 views
3

과 함께 준비 문을 실행하지 않습니다. 내 테이블을 쿼리하기 위해 PreparedStatement를 사용하고 있습니다. 불행히도, 나는 그렇게 할 수 없었다.Java가 매개 변수

내 코드는 다음처럼 간단하다

PreparedStatement preparedStatement = connection.prepareStatement(
"Select favoritefood from favoritefoods where catname = ?"); 

preparedStatement.setString(1, "Cappuccino");     
ResultSet resultSet = preparedStatement.executeQuery(); 

발생이 오류는 java.sql.SQLException: ORA-00911: invalid character입니다. 마치 주어진 매개 변수를 통해 결코 실행되지 않는 것처럼.

감사합니다. 나는 이것을 디버깅하기 위해 하루를 보냈지 만 여전히 실패했다.

Piyush가 언급했듯이 문장 끝의 세미콜론을 생략하면 새로운 오류가 발생합니다. java.sql.SQLException: ORA-00942: table or view does not exist. 하지만이 테이블이 실제로 존재 함을 확신 할 수 있습니다.

UPDATE

촬영. 잘못된 SQL을 편집했습니다. 이제는 성공합니다. 네 시간 동안.

답변

2

표시된 SQL에서 값을 바인딩하고 SQL 프롬프트 또는 SQL 편집기에서 실행하면이 오류가 발생합니까? 쿼리의 끝에 또는 쿼리의 아무 곳에서나 세미콜론 (";")이 없는지 확인하십시오.

+0

.. 이런 식으로주는 시도하고 결과를 얻었다. 그냥 자바가 매개 변수를 대체하지 않는 것 같습니다. 그것은 물음표가 그대로있는 코드를 실행합니다. –

+2

@Piyush 내 코드를 업데이트했습니다. 끝에 세미콜론을 생략하면 새로운 오류가 발생합니다. –

+1

여기에 관련 JDBC 코드를 게시 할 수 있습니까? JDBC에서 잘못된 데이터베이스에 연결할 수 있습니다 - 확인하십시오. 또한 select .favoritefood fromfoodfoods –

0

내가 두꺼비에 직접 문을 실행할 수 있습니다

String query="Select favoritefood from favoritefoods where catname = ?"; 
preStat = conn.preparedStatement(query); // conn is the connection object 
preStat.setString(1,"Cappuccino"); 
ResultSet resultSet=preStat.executeQuery(); 
+2

당신은 단지 별도의 변수에 SQL을 유지? 나는이 일을하고 같은 오류가 발생합니다. –