JDBC编程总结

JDBC编程总结

JDBC的基本原理
JDBC是Java操作数据库的技术规范。他实际上定义了一组标准的操作数据库的接口。为了能让Java操作数据库,必须要有实现了JDBC这些接口的类,不同的数据库厂商为了让Java语言能操作自己的数据库,都提供了对JDBC接口的实现--这些实现了JDBC接口的类打成一个jar包,就是我们平时看到的数据库驱动。由于不同的数据库操作数据的机制不一样,因此JDBC的具体实现也就千差万别,但是你作为java程序员,你只和Java JDBC的接口打交到,才不用理会他们怎么实现的!呵呵,现在知道JDBC驱动是怎么回事了。当然,这些类可以自己去写--如果你很牛!

1、JDBC

JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API。J2SE的一部分,由java.sql,javax.sql包组成。

2、JDBC驱动

JDBC驱动是JDBC API接口的具体实现,不同数据库的实现细节不同。

驱动类型(四种类型),一般优先使用纯Java的驱动,已获得更好的效率。

3、JDBC操作数据库的一般步骤

注册驱动 (只做一次)

建立连接(Connection)

创建执行SQL的语句(Statement)

执行语句

处理执行结果(ResultSet)

释放资源

4、注册JDBC驱动

有三种方式:

Class.forName(“com.mysql.jdbc.Driver”);

推荐这种方式,不会对具体的驱动类产生依赖。

DriverManager.registerDriver(com.mysql.jdbc.Driver);

会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

System.setProperty(“jdbc.drivers”, “driver1:driver2”);

虽然不会对具体的驱动类产生依赖;但注册不太方便,所以很少使用。

DriverManager是一个驱动管理器,内部有一个驱动注册表(Map结构),可以向其注册多个JDBC驱动。

5、建立Connection

Connection conn = DriverManager.getConnection(url, user, password);

url格式:JDBC:子协议:子名称//主机名:端口/数据库名?属性名=属性值&…

User,password可以用“属性名=属性值”方式告诉数据库;

其他参数如:useUnicode=true&characterEncoding=GBK。

6、建立Statement、PreparedStatement

Statement是一个SQL执行器,可以用来执行一个静态的SQL语句。

Statement st = conn.createStatement();

st.executeQuery(sql);

PreparedStatement是一个与定义的SQL执行器,一般较Statement有防止SQL注入的功能,还有较好的执行效率。

String sql = "select * from table_name where col_name=?";

PreparedStatement ps = conn.preparedStatement(sql);

ps.setString(1, "col_value");

ps.executeQuery();

在数据库连接没有关闭的情况下,数据库和驱动可以对PreperedStatement进行优化,PreperedStatement对象可以被重用,从而避免频繁编译SQL。

7、处理ResultSet

ResultSet表示一个查询结果集。

ResultSet rs = statement.executeQuery(sql);

While(rs.next()){

rs.getString(“col_name”);

rs.getInt(“col_name”);

//…

}

8、释放资源

释放资源的顺序是ResultSet, Statement,Connection;

Connection在使用完成后,必须关闭,ResultSet, Statement无所谓,只要Connection关闭了,它们也会被自动关闭(但资源不是立即被释放)。

Connection的使用原则是尽量晚创建,尽量早的释放。

在关闭资源异常的情况下,应该将资源赋null值,以确保资源最大可能的被释放掉。

9、数据类型

几种特殊且比较常用的类型

1.DATA,TIME,TIMESTAMP? date,time,datetime

存:ps.setDate(i,d); ps.setTime(i,t); ps.setTimestamp(i, ts);

取:rs.getDate(i); rs.getTime(i); rs.getTimestamp(i);

2.CLOB ? text

存:ps.setCharacterStream(index, reader, length);

ps.setString(i, s);

取:reader = rs. getCharacterStream(i);

reader = rs.getClob(i).getCharacterStream();

string = rs.getString(i);

3.BLOB ? blob

存:ps.setBinaryStream(i, inputStream, length);

取:rs.getBinaryStream(i);

rs.getBlob(i).getBinaryStream();

10、事务

原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。

一致性(consistency):在事务处理执行前后,数据库是一致的(两个账户要么都变,或者都不变)。

隔离性(isolcation):一个事务处理对另一个事务处理没有影响。

持续性(durability):事务处理的效果能够被永久保存下来 。

connection.setAutoCommit(false);//打开事务。

connection.commit();//提交事务。

connection.rollback();//回滚事务。

11、隔离级别

隔离级别是控制并发访问数据的安全话题。

connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

V:可能出现,X:不会出现


隔离级别

脏读

不可重复读

幻读

读未提交(Read uncommitted)

V

V

V

读已提交(Read committed)

x

V

V

可重复读(Repeatable read)

x

x

V

可串行化(Serializable )

x

x

x

12、执行存储过程

CallableStatement(从PreperedStatement扩展来)

cs = connection.prepareCall(“{call psname(?,?,?)}”);

cs.registerOutParameter(index, Types.INTEGER);

cs.setXXX(i, xxxx);

cs.executeUpdate();

int id=cs.getInt(index);

时间: 2024-10-12 20:46:41

JDBC编程总结的相关文章

JDBC编程之预编译SQL与防注入式攻击以及PreparedStatement的使用教程

在JDBC编程中,常用Statement.PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程. 1.Statement       该对象用于执行静态的 SQL 语句,并且返回执行结果. 此处的SQL语句必须是完整的,有明确的数据指示.查的是哪条记录?改的是哪条记录?都要指示清楚.     通过调用

JDBC编程的步骤

一.进行JDBC编程的步骤大致如下: 1.      加载数据库驱动,通常使用Class类的forName()静态方法来加载驱动.如下代码: Class.forName(dirvirClass) 上面代码中的driverClass就是数据库驱动类所对应的字符串 加载MySQL数据库时采用的代码为: Class.forName("com.mysql.jdbc.Driver"); 2.      通过DriverManager获取数据库连接. DriverManager.getConnec

JDBC编程 之 增删改查

JDBC编程之数据增加,更改,查询,删除 1 package com.good.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.Statement; 7 8 public class Main { 9 //1数据库连接的方法就独立出来了 10 public static Connection getConnec

JDBC编程理论知识(1)

1.SUN公司为统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC 2.JDBC全称为:Java Data Base Connectivity(java数据库连接),它主要由接口组成. 组成JDBC的2个包: (1)java.sql.*; (2)javax.sql.*; 3.JDBC在程序中的位置: 4.JDBC的六个固定步骤 1,注册数据库驱动[利用反射] 2,取得数据库连接对象Connection 3,创建SQL对象 4,执行SQL命令,并返回结果集 5,处理结果集 6,

第15篇-JAVA JDBC编程

第15篇-JAVA JDBC编程 每篇一句 :对于勇敢者,尝试是一条崭新的生活之路 初学心得: 但对于坎坷与泥泞,能以平常之心视之,就非常不容易 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-05-08| JAVA JDBC编程 ] 1.JDBC概述 通过使用JDBC API,Java程序可以非常方便地操作各种主流数据库,这是是Java语言的巨大魅力所在 由于Java语言的跨平台特性,所以使用JDBC API所编写的程序不仅可以实现跨数据库,还可以跨平台,具有非常优秀的可移植性

Java - 面向对象思想进行JDBC编程

mysql-connector-java-5.1.7-bin.jar jdbc.properties driver=com.mysql.jdbc.Driver jdbcUrl=jdbc\:mysql\://localhost\:3306/lesson user=root password= JDBCTools.java package 面向对象思想进行JDBC编程; import java.io.IOException; import java.io.InputStream; import ja

JDBC编程的方式

JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 从上面可以看出JDBC编程一般要如下步骤: 1. 加载数据库驱动 2. 创建并获取数据库连接 3. 创建jdbc statement对象 4. 设置sql语句 5. 设置sql语句中的参数(使用preparedStatement) 6. 通过statement执行sql并获取结果 7. 对sql执行结果进行解析处理 8. 释放资源(resultSet.preparedstatement.connection) 可以看出所有的

数据库和JDBC编程

JDBC是一种数据库连接,它是一种可执行SQL语句的Java API.程序可以通过JDBC API连接到关系型数据库,并使用结构化查询语言来完成对数据库的查询,更新.通过使用JDBC,就可以使用同一种API访问不同的数据库系统,开发人员面向JDBC API编写应用程序,然后根据不同的数据库,安装不同数据库的驱动程序即可.数据库驱动程序是JDBC程序和数据库之间的转换层,数据库驱动程序负责将JDBC调用映射成特定的数据库调用.当需要连接某个特定的数据库时,必须有相应的数据库驱动程序.JDBC驱动的

1.原生态JDBC编程详解与问题总结

1.首先导入jar包 第一个为mysql驱动包 第二个为oracle驱动包 2.以下步骤见代码 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; /** * jdbc编程 * @author asdc * */ public class TestJDBC { public static void main(