类似的Java PreparedStatement SQL语法
我准备了一份声明如下:类似的Java PreparedStatement SQL语法,java,mysql,mysql-error-1064,Java,Mysql,Mysql Error 1064,我准备了一份声明如下: private static final String SQL_LIST_GROUP = "SELECT * FROM table WHERE group LIKE ?;" My function,My function如下所示(缩写并正确声明SQL对象): 有什么建议吗?我看到
private static final String SQL_LIST_GROUP = "SELECT *
FROM table
WHERE group LIKE ?;"
My function,My function如下所示(缩写并正确声明SQL对象):
有什么建议吗?我看到一个DB炸弹因为拖尾而爆炸;在动态SQL之前。删除它会导致它工作吗?我还看到PreparedStatemts中分号的问题 此外,该方法的参数名为“grp”,但在对setString的调用中使用了“group”。这是o型问题,还是问题的一部分?toString()应该足够了,不需要/longValue stuff的值
另一件事,“group”在MySQL中是一个保留字。thnks为了编辑内联,我尝试了4个空格,但没有效果。。你确定+“,%”中应该有逗号吗?“是的,这是一个整数分隔的列表:1,3,56,7,8,6,5,6你能添加实际的错误消息吗?分号根本不起作用,我在MySQL工作台上试用过,没有问题,实际上我喜欢使用它。很高兴知道。我相信在Oracle和DB2中,这是一个问题。对不起,我的回答没有解决你的问题。是的,这是一个打字错误,我会马上纠正它。。我从来没有想到过toString()方法,贡献也很大。我不知道“group”是一个保留字,我会更改字段的。谢谢。将字段从“group”重命名为“guild”,解决了这个问题。
public List< MyType > getGroupList(Long grp) {
Connection link = null;
PreparedStatement query = null;
ResultSet rstList = null;
List< MyType > list = new ArrayList< MyType >();
try {
link = MySQL.getConnection();
link.setAutoCommit(false);
query = link.prepareStatement(SQL_LIST_GROUP);
query.setString(1, "%"+grp.toString()+",%");
rstList = query.executeQuery();
link.commit();
while (rstList.next()) {
list.add(MapFields(rstList));
}
return list;
} catch (SQLException e) {
throw new DAOException(e);
} finally {
close(link, query, rstList);
}
}
"SELECT *
FROM table
WHERE group LIKE '%grp%';"