--sekect
select * from users
则执行类接受到SQL,执行结果:报错“缺少法定参数”。
百思不得其解,所以提出这个问题
折衷解决
写了转换方法,该方法取消" "," "取代之,取消-注释的语句。
public static String getFormatedSqlStr(String sqlStr){
int endPos,notePos;
while((endPos=sqlStr.indexOf(" "))>=0){ //匹配每一行
if ((notePos = sqlStr.indexOf("--")) >= 0 && endPos > notePos ){ //endPos > notePos防止出现问题问题,上一行的" ",下一行的--,则出现问题
String tmpStr =sqlStr.substring(0,notePos)+" ";
String tmpStr2 =sqlStr.substring(endPos+1)+" ";
sqlStr = tmpStr+tmpStr2 ;
}
else
sqlStr = sqlStr.substring(0,endPos)+" "+sqlStr.substring(endPos+1);
}
if((notePos=sqlStr.indexOf("--")) >=0) //最后一行有注释
sqlStr = sqlStr.substring(0,notePos);
return sqlStr;
}
测试
/
sql = "" +
"--selecet " +
"select * from arti--selecle " +
"--asdf " +
"where article_--selectid = 4 " +
"adf--select";
System.out.println(getFormatedSqlStr(sql));
/
归根结底,究竟什么问题导致了这个错误?
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11049438/viewspace-967515/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11049438/viewspace-967515/