当前位置:编程学习 > JAVA >>

jdbc 预处理 in 的问题

如下代码我生成的sql语句是“delete from sjk_llwx where 1=1 and llwxid in (?,?,?);”
然后传了值 就是删不掉数据 请大神帮忙解释下
String[] values=request.getParameterValues("delbox");
int length=values.length;
if(length>0){
StringBuffer sql=new StringBuffer();
sql.append("delete from sjk_llwx where 1=1 and llwxid in ( ");
SqlParameter sqlParams=new SqlParameter();
for(int i=0;i<length;i++){
sql.append("?,");
sqlParams.add("'"+values[i]+"'");
}
DBDAO.executeSQL((sql.substring(0,sql.length()-1)+")"), sqlParams);
dao.executeSQL((sql.substring(0,sql.length()-1)+")"), sqlParams);
} --------------------编程问答-------------------- 有commit没? --------------------编程问答-------------------- 打印一下sql试试,看有没有拼错,或者有没有什么异常。。。 --------------------编程问答-------------------- 你在executeSQL之前打印一下:
System.out.println(sql.substring(0,sql.length()-1)+")");
是组装的你要的 “delete from sjk_llwx where 1=1 and llwxid in (?,?,?);”???
如果是直接复杂数据库中编辑器中执行一下看看,如果SQL语句没问题,那就是没有commit --------------------编程问答-------------------- 1=1 and 是多余的,原因从代码里面看不出来 --------------------编程问答--------------------
引用 4 楼 tanglei198577 的回复:
1=1 and 是多余的,原因从代码里面看不出来


围观。 --------------------编程问答-------------------- 1.数据库连错了。
2.表不存在。
3.自动事务没有设置。 --------------------编程问答--------------------
引用 3 楼 abcmsnet 的回复:
你在executeSQL之前打印一下:
System.out.println(sql.substring(0,sql.length()-1)+")");
是组装的你要的 “delete from sjk_llwx where 1=1 and llwxid in (?,?,?);”???
如果是直接复杂数据库中编辑器中执行一下看看,如果SQL语句没问题,那就是没有commit


prepareStatement貌似不需要commit..自动的。
【delete from sjk_llwx where 1=1 and llwxid in (?,?,?);】
上面这条SQL在组装完活后,不应该有“;”号。你检查下,看看你的有没有。 --------------------编程问答--------------------
引用 楼主 zphappy 的回复:
如下代码我生成的sql语句是“delete from sjk_llwx where 1=1 and llwxid in (?,?,?);”
然后传了值 就是删不掉数据 请大神帮忙解释下

1 sql没有单引号,单引号是某些工具比如PL/SQL的分行符号。
2 sqlParams.add(values[i]);

CSDN真傻X,发个贴还要字数限制。 --------------------编程问答-------------------- 上面的“单引号”是“分号”
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,