私は誰かがこの質問時につまずく場合には答えとしてこれを追加するつもりだ...
public List <CorrekctanswerModel> answerlist(String usernameanswer) throws Exception {
log.info("daomimpl" + usernameanswer);
List<CorrekctanswerModel> answerarray = new ArrayList<CorrekctanswerModel>();
Connection c = null;
PreparedStatement ps = null;
ResultSet rs = null;
String sql = " select s.NAME as Subject, d.value as variant, r.Username, r.UserAnswer, r.Correctanswer, r.Createtime from resultlog r " +
" inner join test_table t on t.ID = r.QuestionId " +
" inner join subject s on s.ID= t.SUBJECT " +
" inner join dictionary d on d.ID = t.Variant" +
"where r.Username LIKE '%usernameanswer%' and r.Createtime > NOW() - INTERVAL 30 SECOND " ;
try {
c = DbHelper.getConnection();
if (c != null) {
ps = c.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
CorrekctanswerModel rep = new CorrekctanswerModel();
rep.setSubject(rs.getString("Subject"));
rep.setVariant(rs.getString("variant"));
rep.setUsername(rs.getString("Username"));
rep.setUseranswer(rs.getString("UserAnswer"));
rep.setCorrekctanswer(rs.getString("Correctanswer"));
rep.setCreatedate(rs.getDate("Createtime"));
answerarray.add(rep);
}
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
JdbcUtility.close(c, ps, rs);
}
return answerarray;
}
、SQLは、これらの行で生成されます。
String sql = " select <fields> from resultlog r " +
" inner join test_table t on t.ID = r.QuestionId " +
" inner join subject s on s.ID= t.SUBJECT " +
" inner join dictionary d on d.ID = t.Variant" +
"where r.Username LIKE '%usernameanswer%' and ... " ;
where
の前に空白を入れるか、またはの後に空白を入れる必要があります。また
... inner join dictionary d on d.ID = t.Variant where r.Username ...
:
String sql = " select <fields> from resultlog r " +
" inner join test_table t on t.ID = r.QuestionId " +
" inner join subject s on s.ID= t.SUBJECT " +
" inner join dictionary d on d.ID = t.Variant" +
" where r.Username LIKE '%usernameanswer%' and ... " ;
はこのように書かれたクエリになります。そのよう
... inner join dictionary d on d.ID = t.Variantwhere r.Username ...
がwhere
の前にスペースを追加:現在の形では、クエリがこれを行います、それはusernameanswer
のように見える変数です。もしそうであれば、where
句は次のようになります。
" where r.Username LIKE '%" + usernameanswer + "%' and ... " ;
我々は完全にあなたのためにそれをデバッグすることはできないかもしれませんそれ以外の場合は、完全なSQL文を共有してください。 –
私は完全なコードを追加しました。ログには「usernameanswer」が表示されます。しかし、私はSQLのように使用できませんでした。 –
'のように': 'の前にスペースを入れてください:' "r.Username LIKE '%usernameanswer%' ..." 'しかし、本当に必要なのは、r.Username LIKE '% "+ usernameanswer +"% "と..." ' – zedfoxus