jdbc是java操作数据库的杀手锏。所有java程序员,对jdbc应该都不陌生。

但是,应该你也曾经被其折磨的抓耳挠腮,咬牙切齿吧,也许正因为这样你才对其记忆犹新,刻骨铭心。

这里有一些使用jdbc中所必知的东西,罗列一下,提醒后来人,解脱后来人!

预编译设置参数:

预编译就是,首先将sql语句发送给数据库服务器,进行编译,生产sql语句模板,类似function(p1,p2,p3)等,然后通过我们设置参数进行执行。预编译时,单引号内的参数时不会解析出来的,每个参数的类型是已经确定的,所以,我们设置参数的时候,可能会被默认添加to_number,to_char等函数,这个根据经验推断出来的,否则事实无法进行科学解释!

  1. 单引号内的变量无效,不会设置单引号内的变量;‘:user_id’,user_id不会被当成变量。
  2. 字符串无需添加单引号。like :name ,name的值在java中“‘%a%’”,使用时会报错,是“%a%”. to_date(:date,'yyyy-mm-dd'),date的java字符串"2012-10-10"即可,如果加上双引号反而画蛇添足,报错!
  3. 设置变量的时候,变量会根据相关属性类型调用to_char,to_number函数。delete from user where id in(:id),如果id是number类型,设置id参数的时候会to_number(:id),如果此时id中包含,就会报无效数字的错误!
  4. 字符串设置参数,会调用to_char()函数,是字符串类型,所以delete from user where id in(:id) 如果id为“123,456,789”,参数设置后相当于delete from user where id in(to_char(‘123,456,789’)), 也等同于delete from user where id in
    (‘123,456,789’).所以还是达不到in的效果。可使用instr函数实现。delete from user where instr(:id,id) != 0.,更加安全的是delete from user where instr(:id,‘,’||id||',') != 0, :id = ',4,3,2,1,'

jdbc 使用谨记的更多相关文章

  1. 谨记给UpdatePanel中动态添加的控件赋ID

    原文:谨记给UpdatePanel中动态添加的控件赋ID 昨天下定决 心对上次做的布局编辑器控件加以改进,其中最主要变化的就是要完全使用ASP.NET AJAX!但是很遗憾,虽然耳闻已久,但目前对AS ...

  2. virtualbox谨记:续....

    接“virtualbox谨记:win7上只有4.3.x的版本支持ubuntu14.04.3虚拟机安装Oracle Rac,其他的版本3.x和5.0.2(至2015-08-30)均不可以”, 续 me自 ...

  3. virtualbox谨记:win7上只有4.3.x的版本支持ubuntu14.04.3虚拟机安装Oracle Rac,其他的版本3.x和5.0.2(至2015-08-30)均不可以

    virtualbox谨记:win7上只有4.3.x的版本支持ubuntu14.04.3虚拟机安装Oracle Rac,其他的版本3.x和5.0.2(至2015-08-30)均不可以

  4. alibaba的JSON.toString会把值为null的字段去掉,谨记

    alibaba的JSON.toString会把值为null的字段去掉,谨记 Map<String,Object> map = new HashMap<>(); map.put( ...

  5. 搞IT产品,请谨记Mobile First

    我们在哪儿? 作为一名企业IT的老鸟,发现一个比较有意思的事情,就是我们的企业IT产品,仍然投入大量的精力,在基于PC的WEB端的设计和交付上,而在APP上的,移动端的考虑,一直都是在PC搞完之后,再 ...

  6. mybatis oracle mysql 批量插入时的坑爹问题--需谨记

    mybatis oracle mysql 批量插入一.oracle的批量插入方式insert into db(id, zgbh, shbzh) select '1', '2', '3' from du ...

  7. 【M16】谨记80-20法则

    1.开始编写代码时,不要过多考虑效率,而应该首先考虑逻辑的清晰性和代码的可读性. 2.后期通过测试找到效率的瓶颈所在,而不是靠猜测.然后,针对性地去解决.也就是80%的时间去解决这20%的代码.

  8. Git安装和使用(谨记)

    刚开始用git的小白适用,,转自http://www.cnblogs.com/qijunjun/p/7137207.html 实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天就来总结下 ...

  9. 指针超强汇总(谨记优先级:() > [] > *)

    参考:http://blog.chinaunix.net/uid-20120277-id-5760985.html C语言所有复杂的指针声明,都是由各种声明嵌套构成的.如何解读复杂指针声明呢?右左法则 ...

随机推荐

  1. [bzoj1612][Usaco2008 Jan]Cow Contest奶牛的比赛_dfs

    Cow Contest奶牛的比赛 bzoj-1612 Usaco-2008 Jan 题目大意:题目链接. 注释:略. 想法: 我们对于每个点dfs,看一下比这个点大的点加上比这个点小的点是否是n-1即 ...

  2. spring-boot-starter-actuator(健康监控)配置和使用

    在生产环境中,需要实时或定期监控服务的可用性.Spring Boot的actuator(健康监控)功能提供了很多监控所需的接口,可以对应用系统进行配置查看.相关功能统计等. 集成: <depen ...

  3. MAPZONE GIS SDK接入Openlayers3之四——高级标注效果实现

    首先看实现效果: 实现要点: 1)树形标注实现 2)复杂标注样式定义 3)效率优化 1.树形标注实现 树形标注采用字体符号来实现,包括以下几个步骤 1)载入字体 2)设置标注值与字体对照关系 3)设置 ...

  4. ArcGIS For Android 的标绘与可视化

    参考 1. CSDN 相关博文 2. ArcGIS for Android 离线数据空间分析--叠加分析 3. ArcGIS for Android Runtime100 基本操作(五)——绘制图层和 ...

  5. 将list转为json字符串

    //确保JSP和servlet的编码方式一致 resp.setContentType("text/html;charset=GBK"); List<String> jy ...

  6. python supervisor进程监控工具的使用

    supervisor —— a process control system 另外一个类似 supervisor的工具,因为supervisor 不兼容python3, !!! Circus Proc ...

  7. [Angular] New in V6.1

    Router Scroll Position Restoration: remember and restore scroll position as the user navigates aroun ...

  8. Date.parse函数的兼容问题

    由于要用Date.parse函数解析一个日期时间的字符串.在谷歌浏览器中解析成功,但是IE.火狐中却不行. 不知何故.firefox对于类似"2010-12-20 15:55:00" ...

  9. Oracle,mysql,sqlserver,postgresql语句几点比較

    1.分页 Oracle: SELECT * FROM(SELECT A.*, ROWNUM RN FROM (select T.* from sj_receiptinfo t WHERE t.TAXN ...

  10. SVN合并(merge)的使用

    使用svn几年了,一直对分支和合并敬而远之,一来是由于分支的管理不该我担心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响.最基本的原因是,自己对分支的目的和合并 ...