4
StringBuilder sqlQry = new StringBuilder();
sqlQry.append("SELECT LIB, PATH")
.append(" FROM OBJ")
.append(" INNER JOIN SRC ON SRC.MBR = OBJ.LOBJ")
.append(" WHERE  TYPE = '*PGM'")
.append(" AND SRC.PATH LIKE '").append("?").append("%'");

PreparedStatement ps = accssConn.prepareStatement(sqlQry.toString());
ps.setString(1, path);

rs = ps.executeQuery();

こんにちは、次の例外が発生しています

[jcc][10145][10844][3.63.123] Invalid parameter 1: Parameter index is out of range. ERRORCODE=-4461, SQLSTATE=42815

列の制限は 255 で、パスは = "C:\Documents and Settings\xyz\Desktop\xyzs" であり、ステートメントで正常に実行されます。したがって、準備されたステートメントで例外をスローする理由は何ですか。

4

2 に答える 2

3
StringBuilder sqlQry = new StringBuilder();

sqlQry.append("SELECT LIB, PATH")
.append(" FROM OBJ")
.append(" INNER JOIN SRC ON SRC.MBR = OBJ.LOBJ")
.append(" WHERE  TYPE = '*PGM'")
.append(" AND SRC.PATH LIKE ").append("?");

PreparedStatement ps = accssConn.prepareStatement(sqlQry.toString());

ps.setString(1, path + "%");
于 2012-09-13T05:45:33.770 に答える
0

一重引用符を確認してください。そのうちの1つに閉じ引用符がありません。また、一重引用符を二重引用符に変更し、\"*PGM\" のようにエスケープしてみてください。

于 2012-09-13T06:42:15.033 に答える