当前位置: 代码迷 >> J2SE >> 问个jdbc的有关问题一直都没搞懂
  详细解决方案

问个jdbc的有关问题一直都没搞懂

热度:50   发布时间:2016-04-24 02:10:59.0
问个jdbc的问题一直都没搞懂
我写了一个sql语句,用?的方式查询查询不出,用'"+参数+"'可以查询的出,这是为什么?
Java code
public ArrayList FindClrNameId(String ClrNameId) throws Exception { // 输入卡号或姓名查询方法        ArrayList list = new ArrayList(); // 创建一个list集合        String sql = "select ISS_CSC,ISS_TYPE,ISS_CLR_ID,ISS_CLR_NAME,ISS_COMPANY,iss_idate,ISS_AVA_TO,ISS_OPR from GWP where iss_clr_name=? or iss_clr_id=? order by iss_clr_id";        this.pstmt = conn.prepareStatement(sql);// 创建操作集        this.pstmt.setString(1, ClrNameId);// 传入卡内号        this.pstmt.setString(2, ClrNameId);        ResultSet rs = pstmt.executeQuery();// 创建结果集,并执行sql语句        System.out.println("语句:"+sql);        while (rs.next()) { // 当结果集不为空            Gwp gwp = new Gwp();            gwp.setIss_csc(rs.getString(1));            gwp.setIss_type(rs.getString(2));            gwp.setIss_clr_id(rs.getString(3));            gwp.setIss_clr_name(rs.getString(4));            gwp.setIss_company(rs.getString(5));            gwp.setIss_idate(rs.getString(6));            gwp.setIss_ava_to(rs.getString(7));            gwp.setIss_opr(rs.getString(8));            list.add(gwp); // 把结果添加到list集合        }        this.pstmt.close();        return list; // 返回list结果    }


这样写查询不出。



Java code
public ArrayList FindClrNameId(String ClrNameId) throws Exception { // 输入卡号或姓名查询方法        ArrayList list = new ArrayList(); // 创建一个list集合        String sql = "select ISS_CSC,ISS_TYPE,ISS_CLR_ID,ISS_CLR_NAME,ISS_COMPANY,iss_idate,ISS_AVA_TO,ISS_OPR from GWP where iss_clr_name='"+ClrNameId+"' or iss_clr_id='"+ClrNameId+"' order by iss_clr_id";        this.pstmt = conn.prepareStatement(sql);// 创建操作集        //this.pstmt.setString(1, "'"+ClrNameId+"'");// 传入卡内号        ResultSet rs = pstmt.executeQuery();// 创建结果集,并执行sql语句        while (rs.next()) { // 当结果集不为空            Gwp gwp = new Gwp();            gwp.setIss_csc(rs.getString(1));            gwp.setIss_type(rs.getString(2));            gwp.setIss_clr_id(rs.getString(3));            gwp.setIss_clr_name(rs.getString(4));            gwp.setIss_company(rs.getString(5));            gwp.setIss_idate(rs.getString(6));            gwp.setIss_ava_to(rs.getString(7));            gwp.setIss_opr(rs.getString(8));            list.add(gwp); // 把结果添加到list集合        }        this.pstmt.close();        return list; // 返回list结果    }

这样就能查询的出。不知道是为啥,在此求教。

------解决方案--------------------
1 乱码

2 字段类型
------解决方案--------------------
你先把
this.pstmt.setString(1, ClrNameId);// 传入卡内号
this.pstmt.setString(2, ClrNameId);
改为具体的值试一下
------解决方案--------------------
我怎么没看到???就赋值了啊
------解决方案--------------------
探讨
乱码没有问题输得东西一样。字段类型我都用String,应该没问题吧

------解决方案--------------------
应该和你的数据库类型有关。
  相关解决方案