关于mySQL带参数的查询出现错误的解决方案
2012-10-12 17:21
525 查看
/**
* 通过区县Id获取街道列表
*/
public List selectJdListByQxId(int qxId) {
openConn();
List reList = new ArrayList();
String sql = " SELECT jdid,jd,qxid FROM tbl_jd WHERE qxid = ? ";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, qxId);
rs = pstmt.executeQuery(sql);
while(rs.next()){
JD jd = new JD();
jd.setJdid(rs.getInt("jdid"));
jd.setJd(rs.getString("jd"));
jd.setQxid(rs.getInt("qxid"));
reList.add(jd);
}
} catch (SQLException e) {
e.printStackTrace();
}
return reList;
}
如上代码,运行到rs = pstmt.executeQuery(sql);这一行的时候结果为空,然后程序直接跳过while()代码,服务器抛出异常
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 '?' at line 1
经检查,将SELECT jdid,jd,qxid FROM tbl_jd WHERE qxid = 1发现完全没有问题,但是在程序中会出现问题,这是为什么呢?
请看我们的的异常信息“to use near '?' at line 1”是“?”周围有错误,这说明在数据库查询的时候并没有转化成我们要的qxId的值,而是一个活生生的“?”,
说明问题出现在 rs = pstmt.executeQuery(sql);这句话,因为这是我们最后的数程序出错的地方了,因为这句话里面的sql == " SELECT jdid,jd,qxid FROM tbl_jd WHERE qxid =?"这句话,在pstmt.setInt(1, qxId)这行代码中,我们改变的不是整体的sql,而是一个问号,也就是说这儿的sql没有被改变,当我们在 rs = pstmt.executeQuery(sql)中又加入sql,这个sql是带问号而且问号没有被改变的sql,所以当然数据库会认为你写了一个非法字符,所以直接这样写 rs
= pstmt.executeQuery();问题就解决了。
* 通过区县Id获取街道列表
*/
public List selectJdListByQxId(int qxId) {
openConn();
List reList = new ArrayList();
String sql = " SELECT jdid,jd,qxid FROM tbl_jd WHERE qxid = ? ";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, qxId);
rs = pstmt.executeQuery(sql);
while(rs.next()){
JD jd = new JD();
jd.setJdid(rs.getInt("jdid"));
jd.setJd(rs.getString("jd"));
jd.setQxid(rs.getInt("qxid"));
reList.add(jd);
}
} catch (SQLException e) {
e.printStackTrace();
}
return reList;
}
如上代码,运行到rs = pstmt.executeQuery(sql);这一行的时候结果为空,然后程序直接跳过while()代码,服务器抛出异常
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 '?' at line 1
经检查,将SELECT jdid,jd,qxid FROM tbl_jd WHERE qxid = 1发现完全没有问题,但是在程序中会出现问题,这是为什么呢?
请看我们的的异常信息“to use near '?' at line 1”是“?”周围有错误,这说明在数据库查询的时候并没有转化成我们要的qxId的值,而是一个活生生的“?”,
说明问题出现在 rs = pstmt.executeQuery(sql);这句话,因为这是我们最后的数程序出错的地方了,因为这句话里面的sql == " SELECT jdid,jd,qxid FROM tbl_jd WHERE qxid =?"这句话,在pstmt.setInt(1, qxId)这行代码中,我们改变的不是整体的sql,而是一个问号,也就是说这儿的sql没有被改变,当我们在 rs = pstmt.executeQuery(sql)中又加入sql,这个sql是带问号而且问号没有被改变的sql,所以当然数据库会认为你写了一个非法字符,所以直接这样写 rs
= pstmt.executeQuery();问题就解决了。
相关文章推荐
- 关于Mysql中正则查询容易出现的错误
- 关于在设计SqlDataAdapter并使用带有参数的 SQL或存储过程时,出现的必须声明 @参数名 的错误解决方案
- mysql官方关于2013和2006错误代码产生原因和解决方案
- MySQL分组查询时出现错误SELECT list is not in GROUP BY ;this is incompatible with sql_mode=only_full_group_by
- 关于MySql登录出现错误代码 1045 Access denied for user 'root'@'localhost' (using password:YES)
- 关于VC出现 0x0C150002 错误的原因以及解决方案
- 关于mysql建表中含有longtext字段时,查询缓慢的原因和解决方案
- 关于mfc重载CListbox控件出现参数错误的问题
- 解决mysql查询,in条件参数为带逗号的字符串,查询结果错误
- Connector/c++ 查询Mysql,出现 can't fetch because not on result set 错误
- 关于mysql出现java.sql.SQLException错误!
- 关于mysql创表的时候出现错误:cannot add foreign key constraint
- 关于hibernate mysql 布尔值查询妥协解决方案
- 分析 mysql_fetch_assoc()方法参数类型错误的警告信息 的出现原因
- 关于MySql安装后出现error:0错误,我的解决方法
- Mysql5.7.20使用group by查询(select *)时出现错误--修改sql mode
- 关于使用CursorAdapter()时出现“column '_id' does not exist”错误的说明及解决方案
- 关于 URL 传递中文参数R额quest获取参数出现乱码的解决方案
- 关于mysql双机热备份中出现111号错误,error connecting to master