java学习笔记—JDBC1(16)
1、数据持久化
l 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用,也称为“固化”。在大多数情况下,服务器或客户端应用中数据的持久化是通过关系型数据库来实现
l 存储设备:磁盘、硬盘, U盘,光盘等
l 存储形式:数据库、xml文件、txt文件等
2、知识点2: Java 中的数据存储技术
l 在Java中,数据库存取技术可分为如下几类:
l JDBC直接访问数据库
l 第三方O/R工具,如Hibernate, ibatis 等
l JDBC是java访问数据库的基石,其他技术都是对jdbc的封装
3、什么是JDBC
l JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的操作数据库的Interface(一组API),定义了用来访问数据库的标准Java类库,而接口的实现有各个数据库厂商来完成
l JDBC驱动程序(jar包):数据库厂商对JDBC接口的一组实现类(jar包)
4、什么是ODBC
l ODBC(Open Database Connectivity,开放数据库连接)是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API
5、JDBC的分类
目前有四种可供使用的JDBC驱动程序,不同类型的的驱动程序有着不一样的使用方法,所以当我们在连接数据库之前,必须先依照我们的需求选择一个适当的驱动程序,这四种不同类型的驱动程序分别是:
1 JDBC-ODBC桥 :桥接器型的驱动程序,
2 部分本地API部分Java的驱动程序,也是桥接器型驱动程序之一
3 JDBC网络纯Java驱动程序
4 本地协议的纯 Java 驱动程序:这类型的驱动程序是最成熟的JDBC驱动程序,不但无需在使用者计算机上安装任何额外的驱动程序,也不需在服务器端安装任何的中介程序(middleware),所有存取数据库的操作,都直接由驱动程序来完成。
6、JDBC API接口介绍

7、java初体验
// 1.数据库服务开启。 2.需要将数据库驱动导入.
//JDBC体验
public class Test1 {
public static void main(String[] args) throws Exception {
//1.将驱动进行注册(可以进行与数据库的链接)
DriverManager.registerDriver(new Driver());
//2.得到一个与数据库连接的对象
Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb","root","root");
//3.得到一个执行sql对象
Statement stm=con.createStatement();
//4.执行sql语句. 以查询为例,执行后会返回一个ResultSet结果集。(其实就是包含查询到的信息)
ResultSet rs=stm.executeQuery("select * from emp"); //查表名
//5.将结果集中的内容迭代出来.
while(rs.next()){
Object obj=rs.getObject("ename"); //查列名
System.out.println(obj);
}
//6.需要将资源释放
rs.close();
stm.close();
con.close(); }
}
8、对以上代码进行异常处理:
//JDBC异常处理
public class Test3 {
public static void main(String[] args) {
Connection con = null;
Statement stm = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/mydb", "root", "root");
stm = con.createStatement();
rs = stm.executeQuery("select * from emp");
while (rs.next()) {
String name = rs.getString("ename");
int no = rs.getInt("empno");
Date date = rs.getDate("hiredate");
System.out.println(name + " " + no + " " + date);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new RuntimeException("加载驱动失败");
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("SQL操作失败");
} finally {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭rs失败的");
}
try {
if (stm != null)
stm.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭stm失败的");
}
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭con失败的");
}
}
}
}
9、对以上代码进行优化(1)
public class Test4 {
@Test
public void jdbcTest() {
//定义在外面,同时将处理异常方法定义在外面
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/mydb";
String username = "root";
String password = "root";
Connection con = null;
Statement stm = null;
ResultSet rs = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, username, password);
stm = con.createStatement();
rs = stm.executeQuery("select * from emp");
while (rs.next()) {
String name = rs.getString("ename");
int no = rs.getInt("empno");
Date date = rs.getDate("hiredate");
System.out.println(name + " " + no + " " + date);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new RuntimeException("加载驱动失败");
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("SQL操作失败");
} finally {
closeResultSet(rs);
closeStatment(stm);
closeConnection(con);
}
}
// 关闭Connection
// 关闭的Statement
// 关闭ResultSet方法
public void closeConnection(Connection con) {
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭con失败的");
}
}
public void closeStatment(Statement stm) {
try {
if (stm != null)
stm.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭stm失败的");
}
}
public void closeResultSet(ResultSet rs) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭rs失败的");
}
}
}
10 对以上代码再次优化
10.1 定义一个mysqldb.properties配置文件
定义好配置变量
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://127.0.0.1\:3306/testguest
username=root
password=1234abcd
10.2 新建jdbcUtil工具类 JdbcUtil.cs
获取配置文件中的值
private static String driver;
private static String url;
private static String username;
private static String password;
// 对driver,url,username, password 进行赋值
static {
// 通过类加载器获得资源,并以流的方式进行操作
InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream(
"包名/ db.properties");
Properties prop = new Properties();
try {
prop.load(is);
driver = prop.getProperty("driver");
url = prop.getProperty("url");
username = prop.getProperty("username");
password = prop.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("读取数据库配置文件失败");
}
}
10.2.1 加载驱动
static {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new RuntimeException("加载驱动失败");
}
}
10.2.2获得连接的方法
public static Connection getConnection() {
Connection con = null;
try {
con = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("连接数据库操作失败");
} finally {
}
return con;
}
10.2.3 关闭的方法
// 关闭Connection
// 关闭的Statement
// 关闭ResultSet方法
public static void close(Connection con) {
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭con失败的");
}
}
public static void close(Statement stm) {
try {
if (stm != null)
stm.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭stm失败的");
}
}
public static void close(ResultSet rs) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭rs失败的");
}
}
10.3 新建Test.CS类
public class Test {
@Test
public void select() {
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
con = JdbcUtil.getConnection();
st = con.createStatement();
rs = st.executeQuery("select * from tg_user");
while (rs.next()) {
System.out.println(rs.getInt());
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.close(rs);
JdbcUtil.close(st);
JdbcUtil.close(con);
}
}
}
java学习笔记—JDBC1(16)的更多相关文章
- Java学习笔记(16)
需求:使用LinkedList存储一副扑克牌,然后实现洗牌功能 package cn.itcast.list; import java.util.LinkedList; import java.uti ...
- java JDK8 学习笔记——第16章 整合数据库
第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145330第八周《Java学习笔记》
20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...
- 20145330第六周《Java学习笔记》
20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...
- Java学习笔记--Swing用户界面组件
很多与AWT类似. 事件处理参考:Java学习笔记--AWT事件处理 1.设计模式: 模型:存储内容视图:显示内容控制器:处理用户输入· 2. 文本输入常用组件 2.1 文本域: JLabel lab ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记07--日期操作类
java学习笔记07--日期操作类 一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...
随机推荐
- C# JSON 序列化
1.JavaScriptSerializer System.Web.Extensions.dll System.Web.Script.Serialization命名空间 Serialize Deser ...
- MySQL GTID (三)
五.如何跳过一个GTID 环境见系列一 5.1 创建表,模拟数据 #主机上 create table t_test (id int primary key ,name varchar(10)); in ...
- 新手C#重载、重写的学习2018.08.04
重载:在同一类(class)中,使用相同的方法名称,不同的参数和(不一定)不同的返回值类型构造成的方法. 举例: class OverLoadTest { public void Hello() { ...
- LevelDB 的缺憾
[LevelDB 的缺憾] 1.Snapshots 只能通过 DB::GetSnapshot() 创建,意即只能创建当下的 Snapshot. 2.
- Shader.WarmupAllShaders
[Shader.WarmupAllShaders]
- 微信小程序通讯录首字母索引效果,车辆品牌选择列表
效果图: wxml代码: <block wx:for="{{list}}"> <view class='letter' id="letter{{inde ...
- [leetcode]621. Task Scheduler任务调度
Given a char array representing tasks CPU need to do. It contains capital letters A to Z where diffe ...
- centos6.5下使用yum完美搭建LNMP环境(php5.6)
准备工作 配置防火墙,开启80端口.3306端口删除原有的 iptables , 添加合适的配置 rm -rf /etc/sysconfig/iptables vi /etc/sysconfig/ip ...
- jQuery绑定事件的四種方式
这篇文章主要介绍的是jQuery绑定事件的四种方式相关内容,下面我们就与大家一起分享. jQuery绑定事件的四种方式 jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点 ...
- zip多个分割文件合并
copy /b 1.z01+1.z02+1.zip 注意:1.zip在最后