我写了一个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);
改为具体的值试一下
------解决方案--------------------
我怎么没看到???就赋值了啊
------解决方案--------------------
------解决方案--------------------
应该和你的数据库类型有关。