java 数据库编程 学习笔记 不断更新
最近开始学习java,感觉java的数据库编程需要发个随笔记录一下,话不多说 切入正题。
一.数据库访问技术的简介
应用程序 → 执行SQL语句 →数据库 → 检索数据结果 → 应用程序
( ODBC JDBC(两个常用的API))
java主要使用的 JDBC驱动程序进行数据库的编程
Java 应用程序 <------> JDBC <------> 数据库
二.JDBC 的体系结构
应用层
↓
驱动层
↓
各个接口
•Driver •Connection •Statement •ResultSet
三.java.sql.包
|
接口名 |
说明 |
|
Connection |
此接口表示与数据的连接 |
|
PreparedStatement |
此接口用于执行预编译的 SQL 语句 |
|
ResultSet |
此接口表示了查询出来的数据库数据结果集 |
|
Statement |
此接口用于执行 SQL 语句并将数据检索到 ResultSet 中 |
|
类名 |
说明 |
|
DriverManager |
此类用于加载和卸载各种驱动程序并建立与数据库的连接 |
|
Date |
此类包含将 SQL 日期格式转换成 Java 日期格式的各种方法 |
|
Time |
此类用于表示时间 |
|
TimeStamp |
此类通过添加纳秒字段为时间提供更高的精确度 |
四.JDBC 编程要点
在Java中使用数据库进行JDBC编程时,Java程序中通常应包含下述几部分内容:
(1) 在程序的首部用import语句将java.sql包引入程序:
import java.sql.*;
(2) 使用Class.forName( )方法加载相应数据库的JDBC驱动程序。若以加载jdbc-odbc桥为例,则相应的语句格式为:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
(3) 定义JDBC的URL对象。例如: String conURL="jdbc:odbc:TestDB";
其中TestDB是我们设置的要创建的数据源。
(4) 连接数据库。
Connection s=DriverManager.getConnection(conURL);
(5) 使用SQL语句对数据库进行操作。
(6) 使用close( )方法解除Java与数据库的连接并关闭数据库。
例如: s.close( );
五.数据库连接 步骤—1
创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String className)实现。例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver")
;
//加载oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//加载sqlserver驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace()
;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
步骤—2
提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk
; //
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true.characterEncoding=gbk:字符编码方式。
也可表示为:
String url= "jdbc:mysql://localhost:3306/test";
//mysql
String
url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//连接sqlserver的url
步骤—3
创建数据库的连接
. •要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接
•使用DriverManager的getConnectin(String url , String username,String
password)方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url =
"jdbc:mysql://localhost:3306/test" ;
String username = "root"
;
String password = "root"
;
try{
Connection
con=DriverManager.getConnection(url,username,password);
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
步骤—4
创建一个Statement
•要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement()
;
PreparedStatement pstmt =
con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
步骤—5
执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等 (返回影响到的数据记录数)
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合语句。
具体实现的代码:
ResultSet rs =
stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT
INTO ...") ;
boolean flag = stmt.execute(String sql)
;
步骤—6
处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name
= rs.getString("name") ;
String pass
= rs.getString(1) ; // 此方法比较高效(列是从左到右编号的,并且从列1开始)
}
步骤—7
关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
4/7/2015 9:20:44 PM H.yf记录
参考文献 《Java编程实战宝典》 清华大学出版社 刘新,管磊等编著
java 数据库编程 学习笔记 不断更新的更多相关文章
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- Java并发编程学习笔记
Java编程思想,并发编程学习笔记. 一.基本的线程机制 1.定义任务:Runnable接口 线程可以驱动任务,因此需要一种描述任务的方式,这可以由Runnable接口来提供.要想定义任务,只需实现R ...
- Java多线程编程(学习笔记)
一.说明 周末抽空重新学习了下多线程,为了方便以后查阅,写下学习笔记. 有效利用多线程的关键是理解程序是并发执行而不是串行执行的.例如:程序中有两个子系统需要并发执行,这时候需要利用多线程编程. 通过 ...
- Java网络编程学习笔记
Java网络编程,我们先来看下面这一张图: 由图可得:想要进行网络编程,首先是服务器端通过ServerSocket对某一个端口进行监听.通过accept来判断是否有客户端与其相连.若成功连上,则通过r ...
- Java并发编程学习笔记(一)——线程安全性
主要概念:线程安全性.原子性.原子变量.原子操作.竟态条件.复合操作.加锁机制.重入.活跃性与性能. 1.当多个线程访问某个状态变量并且其中有一个线程执行写入操作时,必须采用同步机制来协同这些线程对变 ...
- JAVA Socket 编程学习笔记(二)
在上一篇中,使用了 java Socket+Tcp/IP 协议来实现应用程序或客户端--服务器间的实时双向通信,本篇中,将使用 UDP 协议来实现 Socket 的通信. 1. 关于UDP UDP协 ...
- JAVA Socket 编程学习笔记(一)
1. Socket 通信简介及模型 Java Socket 可实现客户端--服务器间的双向实时通信.java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的cli ...
- JAVA并发编程学习笔记------对象的可见性及发布逸出
一.非原子的64位操作: 当线程在没有同步的情况下读取变量时,可能会得到一个失效值,但至少这个值是由之前某个线程设置的值,而不是一个随机值,这种安全性保证被称为最低安全性.最低安全性适用于绝大多数变量 ...
- [转]JAVA并发编程学习笔记之Unsafe类
1.通过Unsafe类可以分配内存,可以释放内存:类中提供的3个本地方法allocateMemory.reallocateMemory.freeMemory分别用于分配内存,扩充内存和释放内存,与C语 ...
随机推荐
- HTML5&CSS3读书笔记
Hi All, 分享一下我学HTML5 摘抄的读书笔记(我用的还是英文,因为一些新的东西还是来自于欧美国家,希望大家习惯于看一些英文材料): 1. Difference between Section ...
- JS中判断数组的方法
JavaScript中检测对象的方法 1.typeof操作符 这种方法对于一些常用的类型来说那算是毫无压力,比如Function.String.Number.Undefined等,但是要是检测Arra ...
- Java 9 揭秘(1.Java入门介绍)
文 by / 林本托 在第一部分中,主要讲解如下内容: JDK 9 包含了哪些内容 运行代码的系统要求 如何安装 NetBeans 1 JDK 介绍 JDK 9是Java开发工具包的第九个主要版本,计 ...
- 两强相争,鹿死谁手 — JQuery中的Ajax与AngularJS中的$http
一.JQuery与AngularJS 首先,先简单的了解一下JQuery与AngularJS.从源头上来说,两者都属于原生JS所封装成的库,两种为平行关系. 二.Ajax请求与数据遍历打印 这里是Aj ...
- (转) Java RMI 框架(远程方法调用)
"原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://haolloyin.blog.51cto.com/1177454/33 ...
- python爬虫从入门到放弃(八)之 Selenium库的使用
一.什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行 ...
- java实现发送邮件
前言:先引入javamail用到的jar包, 自己下载http://fhed.v061.10000net.cn/gulili198509051s/newjspkongjian/ueditor/jsp/ ...
- 在VMware上安装ubuntu,并且SecureCRT远程连接
工具: VMware:VMware-workstation-full_12.5.5.17738.exe Ubuntu镜像:ubuntu-16.04-server-amd64.iso 远程连接工具-- ...
- Vulkan Tutorial 17 Rendering and presentation
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Setup 这一章节会把之前的所有内容进行整合.我们将会编写drawFrame函数, ...
- JQuery浮动层Loading页面加载特效
之前做项目,经常需要一些浮动层加载Loading. 现在好多前端框架都能实现了,最常用的就是 artDialog 下面记录下当时的代码. <!DOCTYPE html PUBLIC " ...