JDBC笔记

--------------------------------------------------------------------------------------------

数据持久化

把数据保存到可掉电式存储设备中一共之后使用,大多数情况下,特别是企业级应用中,

数据持久化意味着将内存中的数据保存到硬盘加以固话,而持久化的实现过程通过

各种关系型数据库来完成持久化的主要应用是将内存中的数据存储在关型数据库中

当然可以存储在磁盘文件,xml数据文件中

----------------------------------------------------------------------------------------------

java中的数据存储技术

在java中,数据库存取技术可分为以下几类:

1.JDBC之间访问数据库

2.JDO技术

3.第三方O/R工具,如Hibernate,ibatis等

---------------------------------------------------------------------------------------------

JCBC是java访问数据库的基石,JDO

Hibernate等只是更好的封装了JCBC

(如调用存储过程,函数必须使用JDBC)

------------------------------------------------------------------------------------------

JDBC基础:

JDBC(java Database Connectivity)是一个独立于特定数据库管理系统,

通用的SQL数据库存取和操作的公共接口(一组API)

定义了用来访问数据库的标准java类库

使用这个类库可以以一种标准的方法,方便的访问数据库资源

JDBC为了访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节技术

JDBC的目标是使java程序员使用JDBC可以连接任何提供了JDBC

驱动程序的数据库系统,这样可以是程序员无需对特定的数据库系统的特点有过多的了解

加快开发过程。

-------------------------------------------------------------------------------------------

JDBC体系结构

JDBC接口(API)包括两个层次:

1.面向 应用的API,JavaAPI,抽象接口,供应用程序开发人员使用

(连接数据库,执行SQL语句,获得结果)

2.面向数据库的API,java Driver API ,供开发商开发

数据库驱动程序

-----------------------------------------------------------------------------------------------

JDBC驱动程序的分类

JDBC驱动程序:各个数据库厂商根据JDBC的规范制作的JDBC实现的类库。

JDBC驱动程序总共有4种类型

1.JDBC-ODBC桥

2.部分本地API部分java的驱动程序

3.JDBC网络存java驱动程序

4.本地协议的纯java驱动程序

//3,4,两类都是纯java的驱动程序,因此,对于java开发者

来说,他们在性能,可移植性,功能等方面都有优势

--------------------------------------------------------------------------------------

本地协议的纯java驱动程序

1.多数数据库厂商已经指出允许客户程序通过网络直接与数据库通信的网络协议

2.这种类型的驱动程序完全使用java编写

通过与数据库建立的socket连接,采用具体厂商的网络协议吧JDBC调用

转化为直接连接的网络调用

---------------------------------------------------------------------------------------------

JDBC API是一系列的接口,它使用应用程序能够进行数据库连接,执行SQL语句,并且得到返回结果

---------------------------------------------------------------------------------------------------------------------

Driver接口

java.sql.Driver接口是所有的JDBC驱动程序需要实现的接口。

这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现

在程序中不需要直接去访问实现了Driver接口的的类,

而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现

---------------------------------------------------------------------------------------------------

/*

通过jdbc向指定的数据表中插入一条记录

*/

public void testStatement(){

/*

1.获取数据库连接

/*

Connection connection=null;

Statement statement=null;

*/

Connection Connection=getConnection();

2.准备插入的SQL语句

String sql="insert into customers (name,email,birth)"+" values (‘abcd‘,‘[email protected]‘,‘1992-10-15‘)";

3.执行插入

3.1获取操作SQL语句的Statement对象:调用Connection的createStatement()方法获取

3.2调用Statement对象的execureUpdate(SQL)执行SQL语句进行的插入

Statement statement=connection.createStatement();

statement.executeUpdate(sql);

4.关闭Statement对象

statement.close();

5.关闭连接

//注意Statement关闭是出异常时,保证Connection也要关闭

捕获异常,判断Statement对象和Connection不为空时才关闭

//关闭的顺序是:

先关闭后后获取的,即先关闭Statement然后关闭Connection对象

connection.close();

*/

(1)Statement:用于执行SQL语句的对象

(2)通过Connection的createStatement()方法获取

(3)通过executeUpdate(sql)执行SQL语句

(4)传入的SQL可以是insert,update,或者是delete但不能是select

(5)Connection,Statement都是应用程序和数据库服务器的连接资源,使用后一定要关闭

//需要在finally中关闭Connection和Statement对象

/*

try{

...

}catch(Exception e){

e.printStackTrace();

}finally{

try{

if(statement!=null){

statement.close();

}

}catch(Exception e){

e.printStackTrace();

}

if(connection!=null){

connection.close();

}

}

*/

/*sql语句

//删除语句:

String sql="delete from where id=1";

//修改语句:

String sql="update customers set name=‘tom‘ " + " where id=1 ";

*/

}

----------------------------------------------------------------------------------------------

一个通用的更新的方法:包括insert,update,delete

//版本1.0

public void static update(String sql){

Connection conn=null;

Statement statement=null;

this.sql=sql;

try{

conn=getConnection();

statement=conn.createStatement();

statement.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace()

}finally{

if(statement!=null){

try{

conn.close();

}catch(Exception e2){

e2.printStackTrace()‘

}

}

if(conn!=null){

try{

conn.close();

}catch(Exception e2){

e2.printStackTrace();

}

}

}

//关闭方法:

public static void release(Statement statement,Connection conn){

if(statement!=null){

try{

conn.close();

}catch(Exception e2){

e2.printStackTrace();

}

if(conn!=null){

try{

conn.close();

}catch(Exception e2){

e2.printStackTrace();

}

}

}

---------------------------------------------------------------------------------------------------------------------------------

/*

*ResultSet对象:结果集,封装了使用JDBC进行查询的结果

*调用Statement对象的executeQuery(sql)可以得到结果集

*ResultSet返回的实际上就是一张数据表

*有一个指针指向数据表的地以后的前一列

*处理结果集:

* 初始状态:指向第一条记录的前面

* next():若返回true,就向下移动一行

*

*/

public void testResultSet(){

}

---------------------------------------------------------------------------------

mysql中,BLOB 是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据

mysql的四种BLOB类型类型(除了在存储的最大信息上不同外,他们是相同的)

-----类型-----------大小(单位,字节)

TinyBlob     最大255

Blob 最大65K

MediumBlob
最大16M

LongBlob
最大4G

-------------------------------------

实际使用中根据需要存入大小定义不同的Blob类型

需要注意的是:如果存入的文件过大,数据库性能会下降

public void testInsertBlob(){

/*插入Blob类型的数据必须使用PreparedStatement,因为Blob类型的数据时无法使用字符串拼接

*具体调用setBlob(int index,InputStream in);

*/ Connection conn=null;

PreparedStatement preparedStatement=null;

conn=JDBCTool.getConnection();

String sql="insert into customers(name,email,birth,picture) "+" values(?,?,?,?);

preparedStatement=conn.prepateStatement(sql);

preparedStatement.setString(1,"abcd");

preparedStatement.setString(2,"[email protected]");

preparedStatement.setString(3,new java.util.Date().getTime());

InputStream in=new FileInputStream("1.jpg");

preparedStatement.setBlob(4,in);

}

//读取操作

public void read(){

/*读取Blob数据:

*使用getBlob方法读取到Blob对象

*调用Blob的的getBinaryStream()得到输入流然后在使用IO操作

*/

}

------------------------------------------------------------------------------

数据库的事务处理:

在数据库中,所谓事务是指一组逻辑操作单元,是数据从一种状态变换到另种状态

为了确保数据库的一致性,数据操作应当是离散额成组的逻辑单元,当他们全部完成时,数据的一致性保持

而当成这个单元的一部分操作失败,整个事务应该视为错误,所有从起点以后的操作应去阿奴回退到开始状态

事务的ACID属性

时间: 2024-12-24 16:51:41

JDBC笔记的相关文章

JDBC笔记整理

 JDBC深入学习笔记 Jdbc:Java Database Connectivity(使用java操作数据库的标准接口,任何的java框架最终底层都是使用jdbc来操作数据库的,只是框架对jdbc有所封装) JDBC的核心接口和类:(深入研究源码有助于我们得心应手的使用) 核心类:DriverManager 核心接口:Connection.PreparedStatement.ResultSet.Statement(几乎被代替了) PreparedStatement接口:预处理机制,可以填充

Spring4.3.1 JDBC笔记

个人总结,转载请注明出处:http://www.cnblogs.com/lidabnu/p/5679354.html 基于Spring4.3.1官方文档总结,官方文档链接http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#jdbc Spring JDBC能干什么,如下图所示,可见,其目的还是“简化开发”,把通用的业务无关的操作都在框架中做了. 先思考一下使用JDBC操作数据库需要解决哪些

java jdbc笔记整理

以前在公司直接用到的关于数据库方面的都是用ibatis,现在先来学些jdbc编程,顺便比较一下与ibatis框架的区别. 一,使用步骤: 1,加载驱动. Class.forName(“com.mysql.jdbj.Driver”); 2,使用DriverManager获取数据库连接.url写法:jdbc:subprotocol,other stuff.如mysql:     jdbc:mysql://hostname:port/databasename Connection conn = Dri

jdbc笔记2

private static String driver; private static String url; private static String username; private static String password; static{ ResourceBundle bundle = ResourceBundle.getBundle("db"); driver = bundle.getString("driver"); url = bundle.

JDBC 笔记3 通过PreparedStatement 对数据库进行增删改查

1 插入数据 public boolean ChaRu3(User user){ boolean flag=true; Connection conn=null; PreparedStatement ps=null; //创建PreparedStatement 对象 String sql= "insert into user (name,pwd) values(?,?)"; //sql语句不再采用拼接方式,应用占位符问号的方式写sql语句. conn=DBConnUtil.getCon

java笔记整理

Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, Ejb, java和模式 Linux/Unix笔记 inode :存储编号(地址) ls -k:查看磁盘分区 ls -li:显示当前文件的inode号. 目录的大小跟文件的大小有关,跟目录里的文件(目录)数量无关. 一行多个命令的话,中间用分号分开.如:pwd;cal;date last | grep

【DRP】—【SQL】批量删除

1 /** 2 * 批量删除用户 3 * 4 * 采用一条语句完成删除 5 * 只提交一次 6 * 7 * 采用Statement拼串方式 8 * delete from t_user where user_id in ('aaaa', 'afff', 'eeee') 9 * @param userIds 10 */ 11 public void delUser(String[] userIds) { 12 StringBuilder sbStr = new StringBuilder(); 1

JDBC学习笔记二

Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement对象,用于执行不带参数的简单SQL语句. 通过JDBC向指定的数据表中插入一条记录,需要注意下面的几点: * 1.Statement:用于执行SQL语句的对象 * 1).通过COnnection的createStatement()方法来获取 * 2).通过excuteUpdate(sql)可以执行S

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(九)----JDBC的PreparedStatement接口重构增删改查 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit.Rollback命令进行事务的提交与回滚.实际上在JDBC中也存在事务处理,如果要想进行事务处理的话,则必须按照以下的步骤完成. JDBC中事务处理的步骤: 1.要取消掉JDBC的自动提交:void setAutoCommit(boolea