쿼리를 수동으로 입력하고 복사하여 붙여 넣기하면 정상적으로 실행됩니다. 내가 PreparedStatement 객체에 쿼리를 만들 때 오류가 발생합니다 :선택 쿼리에 대해 Java PreparedStatement를 사용하는 중 SQL 예외 발생
com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10145][10844][4.22.29] Invalid parameter 1: Parameter index is out of range. ERRORCODE=-4461, SQLSTATE=42815
나는 PreparedStatement의 개체에 대한의 JavaDoc을 읽을 수는 있지만 아이디어 중 신선한 생각했다. 동일하지만 String 대신 int를 사용하는 다른 쿼리는 정상적으로 작동합니다. 이견있는 사람?
코드의 조각 : 아래
String queryText = "";
PreparedStatement querySt = null;
ResultSet answers = null;
queryText = "SELECT title, year, language, weight FROM yrb_book WHERE title = '?' AND cat = '?' ";
try
{
querySt = DbConn.prepareStatement(queryText);
}
catch(SQLException e)
{
System.out.println(e);
System.exit(0);
}
// Execute the query.
try
{
querySt.setString(1, title);
querySt.setString(2, category);
answers = querySt.executeQuery();
}
내가 작업하고있는 테이블 : 나는 30 분 동안이 답변을 공부 create table yrb_book ( title varchar(25) not null, year smallint not null, language varchar(10), cat varchar(10) not null, weight smallint not null, constraint yrb_book_pk primary key (title, year), constraint yrb_book_fk_cat foreign key (cat) references yrb_category, constraint yrb_book_weight check (weight > 0) );
하지만 내 경우에 적용 할 수있는 방법을 볼 수 없습니다 .
. 더 이상이 방법을 시도하고 있습니다 :'string temp = " '"+ title + "'"' – Mike
@Mike는 새로운 쿼리를 실행 했습니까? 자바 SQL API (PreparedStatement)가 당신을 대신 해준다. 새로운 오류가 발생하면 게시하십시오. – jplc
당신이 정확하고 틀렸어. 귀하의 제안은 내 문제를 해결했습니다. 귀하의 제안에 감사드립니다, 정말 고마워! 자바는 실제로'?'를 문자열로 추가 할 때 실제로'''를 추가합니다. 다시 한번 감사드립니다. – Mike