请教各位大牛,如何写一个使用prepareStatement查询mysql数据库的方法?怎么保证其通用性???每条的SQL语句的条件个数是不同的,最主要我想知道setString这里该如何来做到通用?没有思路,请指教!谢谢~~~

解决方案 »

  1.   

    要判断参数类型,setString只使用string类型的
      

  2.   

    那如果都是String类型的话,怎么用把查询的这个方法做到通用呢?因为SQL语句查询的条件个数有多有少的,该怎么去思考这个问题???思路是什么呢?请教!
      

  3.   

    http://www.360doc.com/content/12/1028/13/1007797_244238852.shtml自己参考。
      

  4.   


    ParameterRow pr = new ParameterRow();//com.borland.dx.dataset.ParameterRowsql.append(" where 1=1 ");
    if (!utilString.isNullOrEmpty(evt.getCaseId())) {
    sql.append(" and a.case_id like :caseId");
    pr.setString("caseId", evt.getCaseId()+ "%");
    }
    if (!utilString.isNullOrEmpty(evt.getPolNO())) {
    sql.append(" and a.polno like :polNO");
    pr.setString("polNO", evt.getPolNO()+ "%");
    }
    if (!utilString.isNullOrEmpty(evt.getClaimStat())) {
    sql.append(" and a.claim_stat=:claimStat");
    pr.setString("claimStat", evt.getClaimStat());
    }
      

  5.   

    上面不太完整,这个完整一些。Column caseId = new Column("caseId", "caseId", com.borland.dx.dataset.Variant.STRING);//com.borland.dx.dataset.Column
    Column polNO = new Column("polNO", "polNO", com.borland.dx.dataset.Variant.STRING);
    Column claimStat =
    new Column("claimStat", "claimStat", com.borland.dx.dataset.Variant.STRING);
    ParameterRow pr = new ParameterRow();//com.borland.dx.dataset.ParameterRow
    pr.setColumns(new Column[] { caseId, polNO, claimStat });
    sql.append(" where 1=1 ");
    if (!utilString.isNullOrEmpty(evt.getCaseId())) {
    sql.append(" and a.case_id like :caseId");
    pr.setString("caseId", evt.getCaseId()+ "%");
    }
    if (!utilString.isNullOrEmpty(evt.getPolNO())) {
    sql.append(" and a.polno like :polNO");
    pr.setString("polNO", evt.getPolNO()+ "%");
    }
    if (!utilString.isNullOrEmpty(evt.getClaimStat())) {
    sql.append(" and a.claim_stat=:claimStat");
    pr.setString("claimStat", evt.getClaimStat());
    }