`
cloudtech
  • 浏览: 4617697 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

JDK6笔记(5)----JDBC4(3)

 
阅读更多

JDK6笔记(5)----JDBC4(3)


1、预准备语句的IN参数的pitfall
当你用setter方法向IN参数传递值时要注意一些问题。
不管在任何时候,设置参数并执行预准备语句对象,JDBC驱动器会把Java类型转换成DBMS所能理解的JDBC类型。
两者的对应关系如下:
Java Object/Type ----> JDBC Type
Int ----> INTEGER
Short ----> SMALLINT
Byte ----> TINYINT
Long ----> BIGINT
Float ----> REAL
Double ----> DOUBLE
java.math.BigDecimal ----> NUMERIC
Boolean ----> BOOLEAN or BIT
String ----> CHAR, VARCHAR, or LONGVARCHAR
Clob ----> CLOB
Blob ----> BLOB
Stuct ----> STRUCT
Ref ----> REF
java.sql.Date ----> DATE
java.sql.Time ----> TIME
java.sql.Timestamp ----> TIMESTAMP
java.net.URL ----> DATALINK
Array ----> ARRAY
byte[] ----> BINARY, VARBINARY, or LONGVARBINARY
Java class ----> JAVA_OBJECT
2、用setObject来指定JDBC类型
使用PrepredStatement.setObject()方法可以避免使用IN参数的潜在的映射陷阱(mapping pitfall)。
void setObject(int paramIndex, object x, int targetSqlType);
setObject()方法允许你传递一个Java对象并指定JDBC目标的类型。如下:
PreparedStatement psStatement=cConn.prepareStatement("SELECT * FROM PLAYERS WHERE TEAM=?");
//Set the IN parameter to Titans using setObject
psStatement.setObject(1,"Titans",java.sql.Types.VARCHAR);
//Execute the statement
ResultSet rsResults=psStatement.executeQuery();
//Clear parameters
psStatement.clearParameters();
注意:即使你要发送一个NULL值到DBMS,你也必须指定相应的JDBC的类型。
3、CallableStatement接口
有时你会遇到这样的情况,你需要在RDBMS(Remote Database Management System)上执行存储过程。
CallableStatement提供了一个标准方式来解决上述情况。
1) SQL escape syntax
SQL escape syntax支持两种形式的存储过程:
1.1) 包含结果参数(即OUT参数)的情况;
1.2) 不包含OUT参数的情况。
这两种情况都含IN参数。
CallableStatement接口是从PreparedStatement扩展的,因此它继承了PreparedStatement接口的所有方法。并在其上扩展了OUT参数。
OUT参数的处理是不同的,它们必须在CallableStatement对象执行前进行注册。要注册OUT参数,需用到CallableStatement对象的registerOutParameter方法。该方法是用JDBC类型来注册OUT参数。如下的形式:
void registerOutParameter(int paramIndex, int sqlType)throws SQLException;
看下面的代码:
CallableStatement使用IN参数:
CallableStatement cStatement=cConn.prepareCall("{CALL setPlayerName(?)}");
cStatement.setString("Michael Scofield");
cStatement.execute();
CallableStatement使用OUT参数:
CallableStatement cStatement=cConn.prepareCall("{CALL getPlayerName(?)}");
cStatement.registerOutParameter(1,java.sql.Types.STRING);
cStatement.execute();
//Retrieve Player's name
String sName=cStatement.getString(1);
CallableStatement使用inout参数:
CallableStatement cStatement=cConn.prepareCall("{CALL getandsetPlayersName(?)}");
cStatement.setString("Michael Scofield");
cStatement.registerOutParameter(1,java.sql.Types.STRING);
cStatement.execute();
//Retrieve Player's name
String sName=cStatement.getString(1);

分享到:
评论

相关推荐

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    著作:《java jdk 5.0学习笔记》、《java se 6技术手册》、《spring技术手册》等 译作:《ajax实战手册》、《jquery实战手册(第2版)》 个人网站:http://openhome.cc 目录 《java jdk 7学习笔记》 chapter1 ...

    Java学习笔记7.0

    《Java JDK6学习笔记》是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型...

    Jmeter 介绍和安装笔记

    Jmeter 介绍和安装笔记 Jmeter 介绍和安装笔记 Jmeter 介绍 JMeter 是apache 开源的性能测试工具。Jmeter 最初的想法是用来做web 自动化 测试...4、Jmeter 部署笔记简单 5、资料笔记少,纯英文 6、入门比较简单,上手快

    Anynote_distancejck_jsp个人笔记_

    个人笔记平台环境要求1、jdk1.6+2、mysql5.0+3、apache-tomcat-6.0+安装方法1、将压缩包中的Anynote.war文件拷贝到Tomcat的webapps目录下, 启动Tomcat后,会自动生成Anynote文件夹;2、如果使用Mysql,创建UTF-8...

    JavaEE 学习笔记

    5.本地成功使用JDBC连接Mysql,并读取数据 :black_small_square:具体实现 一,本地安装Java环境 在官网下载JDK(Java Development Kit) 1.首先我们需要进入官网下载jdk 官网网址:...

    水木清华站∶Java版精华区 含jsp及js等集合.chm

    [目录]Java学习笔记(推荐) 6. [目录]JDBC文档 7. [目录]RMI 文档 2. [目录]Java资源(文档-书籍-下载-注册码) 1. [目录]License 和注册码 2. [目录]好书推荐 3. [目录]关于Java的...

    图书商城系统资料+源码+笔记 非常适合学习

    JSTL + JSP + Servlet + JavaBean + BeanUtils + FileUpload + JavaMail + DBUtils(JDBC) + C3P0 + MySQL + MyEclipse10+ Tomcat7.0 + JDK6 + Windows MVC 模式 JavaEE 三层结构 web层 service层 dao层 DAO 模式

    2020/2/19学习笔记-day01

    JDBC:java代码里面用程序进行操作数据库(比较底层的代码实现) ​ MyBatis框架:对数据库进行封装 ​ JAVA EE:核心是JSP、SERVLET ​ Spring框架:JAVA EE体系最重要的框架 ​ Redis:数据库的读写,属于一种内存...

    动力节点Java基础301集_史上最全的Java基础教程

    4: 源码分析分析讲的特别到位,尤其是HashMap的工作原理和源码分析,真正的把jdk源码翻了一遍,要是拿着这个去面试绝对是秒杀级神器。 5:使用多线程模拟用户去ATM取钱讲的也非常不错,后续还提了一个小Timer定时任务...

    Online-Food-Delivery:VTU CBCS下的第五个SEM DBMS迷你项目

    安装NetBeans IDE 8和JDK 1.8及更高版本。 下载ojdbc6,以实现前端和后端的连接。 下载 OR 导入 将图像用于前端。 输出 步骤1:首页 步骤2:登录页面 步骤3:OFD 步骤4:员工访问 步骤5:员工信息 步骤6:...

    springmybatis

    (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看中文的:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html) 写在这个系列前面的话: 以前...

    JAVA学生成绩管理系统毕业设计源码+需求分析+系统设计+使用说明+导入配置+运行截图等详细资料

    JAVA学生成绩管理系统源码+需求分析+系统设计+使用说明+导入配置+运行截图等详细资料; 1、系统功能菜单: 1)管理员功能菜单(学生信息管理、...系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Ajax+面向接口编程

    SomeJava:将以往项目应用中各种框架、中间件的使用方式抽取出来,希望以后给刚接触直接运行,入门参考。。

    ###技术笔记 慢慢整理成博客: ###tomcat Tomcat6 6版本是个经典,自己整理可以跑起来的Tomcat代码,阅读学习。 tomcat-work 是《How Tomcat Works》的代码,可惜是Jdk1.4的,也可以作为学习用。 ###分布式小框架...

    java文集

    映射标记 Java的“静态库链接” 姚博文 集成ACEGI 进行权限控制 SWT可交互式Browser控件 JDK配置(注意) RIA简介(第一部分) 在 Eclipse 中嵌入 NASA World Wind Java SDK, 用3DES加密解密 ...

    security-poc:使用Spring Security

    JDK 14 Maven的3.6 特征 身份验证(不同的配置文件)和授权 JSP + JSTL Apache Tiles(HTML模板) 执行器 (当前)没有测试->因此质量门操作失败 个人资料 类型 Maven个人资料 Spring简介 密码编码器 笔记 内存中...

    bank-for-pros

    JDBC HTML和CSS 内置 玛文 Tomcat MySQL 执行 您可以访问该网站,为以查看已部署的应用程序。 要在本地运行该应用程序,您需要在计算机上安装JDK 8和Tomcat 9.0.41。 而且,您需要在Tomcat主页中的POM文件中声明...

    JPA深度刘宝宝剖析版第一讲

    4.JPA 包括 3方面的技术 ORM 映射元数据:JPA 支持 XML 和 JDK 5.0 注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。 JPA 的 API:用来操作实体对象,执行CRUD...

Global site tag (gtag.js) - Google Analytics