クエリを手動で入力してコピー貼り付けを実行しても正常に実行されています。私は、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は新しいクエリを実行しましたか? Java SQL API(PreparedStatement)があなたのために働きます。新しいエラーが発生した場合は、それを投稿してください。 – jplc
あなたは正しいと私は間違っていた。あなたの提案は私の問題を解決しました。あなたの提案をありがとう、私は本当にそれを感謝します! Javaでは '? 'を単独で置き換えるときに' ''を文字列に追加します。再度、感謝します。 – Mike