JDBC编程——操作数据库

操作数据库:
1.execute()方法
Statement接口的execute()方法几乎可以执行任何SQL语句,若不清楚SQL语句的类型,则只能通过使用execute()方法来执行SQL语句。
使用execute()方法执行SQL语句的返回值是boolean值,表明执行该SQL语句是返回了ResultSet对象:
(1)当excuse()方法的返回值为true时,使用Statement的getResultSet()方法来获取execute()方法执行SQL查询语句所返回的ResultSet对象;
(2)当返回值为false时,使用getUpdateCount()方法来获取execute()方法执行DML语句所影响的行数。
2.executeUpdate()和executeLargeUpdate()方法
此方法用于执行DDL和DML语句。executeLargeUpdate()方法的返回值的类型为long,当DML语句影响的记录超过Integer.MAX_VALUE时,建议使用该方法。
3.PreparedStatement接口
PreparedStatement接口继承Statement接口,该接口具有以下两个特点:
(1)PreparedStatement对象中所包含的SQL语句将进行预编译,当需要多次执行同一条SQL语句时,直接执行预先编译好的语句,其执行速度比Statement对象快;
(2)PreparedStatement可用于执行动态的SQL语句,即在SQL语句中提供参数,大大提高了程序的灵活性和执行效率。
动态SQL语句使用“?”作为动态参数的占位符,示例如下所示。
示例:参数化的动态SQL语句

 Stirng insertSql = "INSERT INTO userdetails(id,username,password,sex)
                              VALUSE(?,?,?,?)";

示例:创建PreparedStatement对象

PreparedStatement pstmt = conn.prepareStatement(insertSql);

在执行带参数的SQL语句前,必须对“?”占位符参数进行赋值。PreparedStatement接口中提供了大量的setXXX()的方法,通过占位符的索引完成对输入参数的赋值,根据参数的类型来选择对应的setXXX()方法。
示例:使用setXXX()方法对参数赋值

pstmt.setInt(1,7); pstmt.setString(2,"Tom"); pstmt.setString(3,"123456"); pstmt.setByte(4,(byte)1);

4.CallableStatement接口
用于执行数据库中的存储过程,存储过程是数据库中一种特殊的预编译的SQL语句。
CallableStatement接口继承了PreparedStatement接口,可以处理一般的SQL语句,也可以处理以下三种带参数的存储过程。
(1)IN(输入)参数,该参数属于默认参数;
(2)OUT(输出)参数;
(3)IN OUT(输入输出)参数。
使用Connection类的prepareCall(String sql)方法可以创建一个CallableStatement对象,方法的参数可以是一个调用存储过程的字符串。
【语法】调用存储过程的SQL

"{call存储过程名([参数占位符?])}"
 其中:(1)call关键字用于调用存储过程;
 (2)存储过程名与数据库中定义的存储过程名一致;
 (3)参数占位符“?”是IN,OUT还是IN OUT取决于存储过程定义,如果存储参数,则无须使用“?”,否则有几个参数就使用对应数量的“?”。
 当存储过程有返回值时,调用存储过程的字符串格式如下。

【语法】调用有返回值得存储过程

{参数占位符?=call存储过程名([参数占位符]}

【示例】创建CallableStatement对象

 //存储过程不带参数
   CallableStatement cstmt1 = conn. prepareCall("{call proc add}");
   //存储过程带2个参数
   CallableStatement cstmt2 = conn. prepareCall("{call proc add(?,?)}");
   //存储过程带2个参数且有返回值
   CallableStatement cstmt3 = conn. prepareCall("{? = call proc add(?,?)}");

CalaleStatement接口通过sexXX方法对IN参数进行赋值episted hPramener)方法对OUT参数进行类型注册。
4.1. OUT参数类型注册的方法
在执行-个存储过程之前,必须先使用registerOutParamenter()方法对存储过程中的OUT参数进行类型注册,其语法格式如下。
【语法】 注册OUT输出参数的类型

registerOutParamenter( intindex, int sqlType);
其中:
(1)index为对应参数占位符的序号;
(2)sqIType 为对应参数的类型.通常使用java. sql. Types的静态常量来指定,例如Types. FLOAT,Types, INTEGER等。

【示例】注册第2个OUT输出参数是varchar类型

 cstmt. registerOutParameter(2, java. sql. Types. VARCHAR);
4.2检索结果的获取
由于CallableStatement允许执行带OUT参数的存储过程,因此也提供了完善的getXXXO方法来获取OUT参数的值。

下述示例代码创建–个CallableStatement对象,并对参数进行设置,执行后访问返回参数的值。
【示例】创建带 IN和OUT参数的CallableStatement对象

CallableStatement cstmt = conn prepareCall("{? =call proc add(?,?)}");//注册OUT参数的类型
cstmt. registerOutParameter(1, java. sql. Types.INTEGER);//为IN参数赋值
cstmt. setInt(2, 8);
cstmt. setString(3, "zkl");//执行
cstmt. execute( ) ;
//通过参数索引获取返回值
int sum = cstmt. getInt(1) ;

5.数据库访问优化
将访问数据库时通用的基础代码进行封装,即编写一个数据库访问工具类DBUtil,用于提供访问数据库时所用到的连接、查询、更新和关闭等操作的基本方法,其他类通过调用DBUtil工具类来实现数据库的访问。
(1)编写属性文件
为了便于后期维护,在编写DBUtil工具类之前,通常将连接数据库的参数信息保存在属性文件中。
(2)编写DBUtil工具类
(3)使用DBUtil工具类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值