日期:2014-05-20  浏览次数:20801 次

com.microsoft.sqlserver.jdbc.SQLServerException: '%%' 附近有语法错误。
是哪里错了。怎么解决?

------解决方案--------------------
%%不是模糊查询吗
------解决方案--------------------
把代码贴出来。。就一句错误,,只能告诉你是sql语句或数据库连接语句错误了
------解决方案--------------------
String condition="select*from employee1 where"+ziduan+"Like'%"+keyWord+"%'";
这句有问题

改为:
String condition="select * from employee1 where "+ziduan+" like '%"+keyWord+"%'";

原因:where "+ziduan+" like '%"+keyWord+"%'";之间少了空格,导致sql语句连起来了。。报错了
------解决方案--------------------
5楼正解
------解决方案--------------------

public StringBuffer getQueryResult(){
String condition="select*from employee1 where"+ziduan+"Like'%"+keyWord+"%'";
StringBuffer str=f(condition);
return str;
}

那是因为上句执行时,你的两个参数ziduan和keyword根本没有赋值吧?所以就出现问题了。。

你debug调试一下,看看。我怀疑ziduan="",keyword=""。
------解决方案--------------------
你这是struts1.我好久没弄过了。。你只需要将页面参数传到后台就行了。。。
Java code

public void setKeyWord(String s){  
        keyWord=s.trim();
        try{
            byte bb[]=keyWord.getBytes("ISO-8859-1");
            keyWord=new String(bb,"GB2312");
        }
        catch(Exception e){}
    }
    public String getKeyWord(){
        return keyWord;
    }
    public void setZiduan(String s){
        ziduan=s.trim();
        try{
            byte bb[]=ziduan.getBytes("ISO-8859-1");
            ziduan=new String(bb,"GB2312");
        }
        catch(Exception e){}
    }

你这两个类是转换中文乱码的。。。所以你可以先用String zd=request.getParameter("ziduan")或者String kw=request.getParameter("keyWord");
然后设置一下:setZiduan(zd);setKeyWord(kw);

看行不? 你debug看到错误根据错误改就行了。。。

------解决方案--------------------
探讨
引用:

你这是struts1.我好久没弄过了。。你只需要将页面参数传到后台就行了。。。
Java code

public void setKeyWord(String s){
keyWord=s.trim();
try{
byte bb[]=keyWord.getBytes("ISO-8859-1");
keyWo……


还是不行

------解决方案--------------------
将你那句sql 语句打印下 放到数据库查询下..看看 ziduan 在表中是否存在这个字段呢?
------解决方案--------------------
String condition="select * from employee1 where "+ziduan+" Like '%"+keyWord+"%'";


多加点空格嘛
------解决方案--------------------
既然提示语法错误,那就先看看没变量的写法有没报错。
String condition="select * from employee1 where number Like '%1%'";
如果没报错,就加回一个变量
String condition="select * from employee1 where "+ziduan+" Like '%1%'";
如果报错,就debug看ziduan是否等于""……不会debug就找身边的人问……
或者再笨点
System.out.ptintln("ziduan: [" + ziduan + "]");
System.out.ptintln("keyWord: [" + keyWord + "]");
运行看看终端输出什么。
------解决方案--------------------
前台form的action为空,你后台怎么获取值呢