在一个类里面是这样写的:
package dataModule;import itemLists.ItemLists;
import itemLists.Str;import java.io.UnsupportedEncodingException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;import javax.servlet.http.HttpServletRequest;import db.MysqlDB;public class MidBargainmProperty {
public ArrayList MidRecommendationList = new ArrayList();

public ArrayList getMidRecommendationList() {
return MidRecommendationList;
}
public void setMidRecommendationList(ArrayList midRecommendationList,String line) {
this.MidRecommendationList = midRecommendationList;
}
public MidBargainmProperty(){
}
/**
 * 查找买卖成交案例楼盘信息
 * 
 */
public void getMidSalePropertyOne(HttpServletRequest request,String city,String type,String start,String end){
MysqlDB mysqlDB = new MysqlDB();
String Query="";
Query = "select isf_id,brm_region_id, snr_Prem_Addr2 AS brm_WuYian ,snr_Prem_Addr1 AS brm_region_name,room ,drawingroom ,building_area,price ,Inst_Date,tx_type_name from  isf_web.isf_info where IsApproval='y'  and  IsEdit='y' and  IsDisplay='y' and brm_city_name like '%"+city+"%' and tx_type_name like '%"+type+"%' and room!='' and drawingroom!='' and building_area!=0.00 order by Inst_Date desc limit 0,14";
         System.out.println("查找买卖成交案例楼盘信息:"+Query);
//有中文的sql
try {
Query = new String(Query.getBytes("gbk"),"latin1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int pagesize=14;

ItemLists itemLists=new ItemLists(Query,pagesize,request);

Query=itemLists.getResultList();

String pageft=(itemLists.getPageft()!=null)?itemLists.getPageft():"";

request.setAttribute("pageft", pageft);
ResultSet rs = mysqlDB.execute(Query);
try {
rs.last();
if(rs.getRow()>0){
rs.beforeFirst();
int i=0;
while(rs.next()){ 
String isf_id=rs.getString("isf_id");
String brm_region_id=rs.getString("brm_region_id");//楼盘编号
String brm_WuYian="";//楼盘名称
            String brm_region_name="";//区域名称
    String room=rs.getString("room");//户型--房
String drawingroom=rs.getString("drawingroom");//户型--厅
String building_area=rs.getString("building_area");//面积
building_area=building_area.substring(0,building_area.indexOf("."));
String price=rs.getString("price");//价格
if ((price != null) && (type.equals("买卖"))) {
            if (price.length() > 4)
              price = price.substring(0, price.length() - 4);            
          }
String Inst_Date=rs.getString("Inst_Date").substring(0,10);//发布时间
String tx_type_name="";
// if(price!=null){
// if(price.length()>4){
// price=price.substring(0,price.length()-4);
// }else{
// price="0."+price.substring(0,1);
//
// }
// }
try {
brm_WuYian = new String(rs.getString("brm_WuYian").getBytes("latin1"),"gbk");
brm_region_name = new String(rs.getString("brm_region_name").getBytes("latin1"),"gbk");
tx_type_name = new String(rs.getString("tx_type_name").getBytes("latin1"),"gbk");

} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

            HashMap news = new HashMap();
            brm_WuYian = (brm_WuYian.length()>6)? brm_WuYian.substring(0,6):brm_WuYian;
news.put("brm_region_id", brm_region_id); 
news.put("brm_WuYian", brm_WuYian);
news.put("brm_region_name", brm_region_name);
//news.put("room", room+"房");
news.put("room",room ==null||drawingroom ==null?"-- ":room+"房"+drawingroom+"厅");
news.put("building_area", building_area);
news.put("price", price==null?"--":price);
news.put("Inst_Date", Inst_Date);
news.put("tx_type_name", tx_type_name);
news.put("isf_id", isf_id);
MidRecommendationList.add(news);

// i++;
// if(i>9){
//   break;
// }
}
}else{
HashMap news = new HashMap();
news.put("brm_region_id", " "); 
news.put("brm_WuYian", " ");
news.put("brm_region_name", " ");
//news.put("room", room+"房");
news.put("room"," ");
news.put("building_area", " ");
news.put("price", " ");
news.put("Inst_Date", " ");
news.put("tx_type_name", " ");
MidRecommendationList.add(news);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mysqlDB.close();
}}然后总是报这样的错:
java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0,14' at line 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2988)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2917)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:824)
at db.MysqlDB.execute(MysqlDB.java:74)
at dataModule.MidBargainmProperty.getMidSalePropertyOne(MidBargainmProperty.java:56)
at action.two.MidBargainBuy.MidBargainBuyAction(MidBargainBuy.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at action.ControllerServlet.doGet(ControllerServlet.java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)研究了半天,还是不知道哪里错了

解决方案 »

  1.   

    Mysql --  sql语句中分页LIMIT 0,14。有错误。偶忘了是不是从0开始了,改LIMIT 1,14看看。
      

  2.   

    String Query="";
    Query = "select isf_id,brm_region_id, snr_Prem_Addr2 AS brm_WuYian ,snr_Prem_Addr1 AS brm_region_name,room ,drawingroom ,building_area,price ,Inst_Date,tx_type_name from isf_web.isf_info where IsApproval='y' and IsEdit='y' and IsDisplay='y' and brm_city_name like '%"+city+"%' and tx_type_name like '%"+type+"%' and room!='' and drawingroom!='' and building_area!=0.00 order by Inst_Date desc limit 0,14";语句有问题吧
      

  3.   

    select * from (select isf_id,brm_region_id, snr_Prem_Addr2 AS brm_WuYian ,snr_Prem_Addr1 AS brm_region_name,room ,drawingroom ,building_area,price ,Inst_Date,tx_type_name from isf_web.isf_info where IsApproval='y' and IsEdit='y' and IsDisplay='y' and brm_city_name like '%"+city+"%' and tx_type_name like '%"+type+"%' and room!='' and drawingroom!='' and building_area!=0.00 order by Inst_Date desc) limit 0,14
    试下这个那个limit 是你后来加的 还是原来就有?
      

  4.   

    第一句的意思不是提示你mysql语法错误么?
      

  5.   

    SQL文错了吧,把sql打出来看看
      

  6.   

    mysql什么版本的,4以前的好像不支持limit offset
    试试用limit 14
      

  7.   

    打印出来的SQL:
    select isf_id,brm_region_id, snr_Prem_Addr2 AS brm_WuYian ,snr_Prem_Addr1 AS brm_region_name  ,room ,drawingroom ,building_area,price ,Inst_Date,tx_type_name from  isf_web.isf_info where IsApproval='y'  and  IsEdit='y' and  IsDisplay='y' and brm_city_name like '%北京%' and tx_type_name like '%租%' and room!='' and drawingroom!='' and building_area!=0.00 order by Inst_Date desc limit 0,14
    每有报错,而且我还查了14条数据出来
      

  8.   


    用我 6 楼的 sql 就可以了
      

  9.   

    Query = new String(Query.getBytes("gbk"),"latin1");这是干什么?
      

  10.   

    6楼的sql查询有结果了么?反正就是sql语句的问题。
      

  11.   

    这个latin1编码确实比较纠结。latin1不支持中文。
      

  12.   


    如果 还不行 就直接 写 limit 14, 再 不行就去掉 外面的 select * from () 再 limit 14看看 
      

  13.   

    唉,我把“limit 0,14”去掉就行了,我知道错在哪里了,唉,怎么可以这么笨呢我?
      

  14.   

    我这里又没数据库测试。我只知道limit 0,14出问题……