用jdbc做查询操作时动态拼接参数报SQL语法错误的问题
来源:互联网 发布:java导出excel详解 编辑:程序博客网 时间:2024/06/05 15:14
问题描述:
自学用java开发后台服务的过程中,操作数据库的框架选用的jdbc。在用jdbc查询数据库时,有时需要动态的拼接查询语句(select...)所需要的参数,比如在servlet中获取到请求的url携带的参数IP:
String ip = request.getParameter("ip");
然后用这个ip动态的在servlet中拼接SQL语句:
String sql = "select *from <数据表名> where ip = "+ip;
然后用相关api执行SQL语句:
//省略连接数据驱动以及建立连接的代码
statement = connection.createStatement();
statement,executeQuery(sql);
上面的逻辑看似没有问题,但是结果却报错,主要是说从IP地址的第二个点号往后的语法有错,也就是拼接的类似192.168.xxx.xxx这样的参数时,会提示.xxx.xxx这附近的语法有错,而我手动拼接固定参数时,比如sql = "select *from xxx where ip=\"192.168.xxx.xx\"";这样却可以通过,初步怀疑是这个api的使用不熟,导致SQL语句写不正确。
解决方式:
用PreparedStatement代替Statement,借助通配符可以把参数进行挨个设置:
String SQL= "select *from xxx where ip = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,ip);//拼接IP
statement.setXxx(2,...);//其他需要配置的参数
ResultSet set = statement.executeQuery();
...
注意:SQL语句中的通配符个数和preparedstatement设置的参数个数保持相同,也就是select中有几个?号,preparedstatement就调用几个setXxx()方法按顺序相对应。
总结:自学的过程中难免会踩到很多坑,建议新开始使用任何一种工具之前先快速的读一下它的使用文档,磨刀不误砍柴工。
阅读全文
1 0
- 用jdbc做查询操作时动态拼接参数报SQL语法错误的问题
- 根据查询参数list动态拼接SQL
- Sql动态查询拼接字符串的优化
- 多条件查询--使用dapper命令参数动态拼接出最安全的sql语句
- 语法错误 (操作符丢失) 在查询表达式的问题
- 关于sql 查询时的 字段拼接
- 关于sql 查询时的 字段拼接
- 遇到 JDBC执行sql查询,报[列名无效]问题
- 执行所读取的sql文件中的sql语句报语法错误之文件编码问题
- 易语言的sql操作时的多个查询条件拼接方法
- 在ibatis 拼接sql语句,动态查询
- 在ibatis 拼接sql语句,动态查询
- 根据条件查询动态拼接sql语句
- 动态sql语句拼接查询条件
- ibatis参数传递 sql动态拼接
- sql语句,exec执行 拼接的字符串 输出参数 问题
- 【SQL】拼接SQL语句-参数化查询-模糊查询
- mybatis动态sql语法错误
- Spring WebSocket使用token认证连接
- MFC选择文件按钮代码
- 上传图片后显示在前台
- sysu-17B02签到
- FormPanel类的frame属性
- 用jdbc做查询操作时动态拼接参数报SQL语法错误的问题
- Weka上机实验二:调用WEKA包进行kmeans聚类
- svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法
- 求若干个数的平均数并输出123456的二进制和十六进制
- Spring的自定义标签
- Java并发编程:Lock
- okhttp的二次封装加入泛型
- 02css学习笔记
- Android view滑动悬浮固定效果实现