day06_JDBC学习笔记
Posted haha
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day06_JDBC学习笔记相关的知识,希望对你有一定的参考价值。
一、JDBC概述
为什么要使用JDBC?
JDBC:Java DataBase Connectivity,是SUN公司提供的一套操作数据库的标准规范(技术)。
JDBC与数据库驱动的关系:接口与实现的关系。
JDBC规范(掌握四个核心对象):
DriverManager类:用于注册驱动(创建连接对象)。 java.sql.DriverManager;
Connection接口:表示与数据库创建的连接 。java.sql.Connection;
Statement接口:操作数据库sql语句的对象,并返回相应结果的对象。 java.sql.Statement;
preparedStatement接口:预编译对象,是Statement对象的子类。用于解决sql的注入问题。实际用的是这个类。java.sql.PreparedStatement;
ResultSet接口:结果集或一张虚拟表(客户端存表数据的对象)。 java.sql.ResultSet;
开发一个JDBC程序的准备工作:
> JDBC规范在哪里:
JDK中:
java.sql.*; // jdk自身带的包
javax.sql.*; // 扩展包(企业级开发)
> 数据库厂商提供的驱动:jar文件 (也即具体的实现)
*.jar
二、开发一个JDBC程序(重要)
使用JDBC技术,通过java代码实现查询数据库中的数据并显示在java的控制台中。
1、先创建数据库表,并向表中添加测试数据。
create database day06; use day06; create table users ( id int primary key auto_increment, name varchar(40), password varchar(40), email varchar(60), birthday date ) character set utf8 collate utf8_general_ci; insert into users(name, password, email, birthday) values(\'zs\', \'123456\', \'zs@sina.com\', \'1980-12-04\'); insert into users(name, password, email, birthday) values(\'lisi\', \'123456\', \'lisi@sina.com\', \'1981-12-04\'); insert into users(name, password, email, birthday) values(\'wangwu\', \'123456\', \'wangwu@sina.com\', \'1979-12-04\');
2、创建Java Project项目,添加数据库驱动(xxx.jar)。
3、实现JDBC操作。
三、JDBC常用的类和接口详解
1、java.sql.Drivermanager类:注册驱动、建立连接
a、注册驱动
DriverManager.deregisterDriver(new com.mysql.jdbc.Driver()); // 不建议使用
原因有2个:
> 导致驱动被注册2次。
> 强烈依赖数据库的驱动jar包 (若把奶瓶的Build Path给Remove掉,代码就会报错,就能看到效果)
解决办法:
Class.forName("com.mysql.jdbc.Driver"); // 把奶瓶的Build Path给Remove掉,代码也不会报错了
用到反射机制的知识:靠类的全路径来加载,解耦合了,不依赖数据库的驱动jar包了,以后会把上面的字符串放在配置文件里,更灵活了,便于后期维护。
b、与数据库建立连接
DriverManager类的静态方法:
public static Connection getConnection(String url, String user, String password) 试图建立到给定数据库 URL 的连接
DriverManager.getConnection("jdbc:mysql://localhost:3306/day06", "root", "root");
URL:是SUN公司与数据库厂商之间的一种协议。
jdbc:mysql://localhost:3306/day06
协议 子协议 IP 数据库端口号 数据库名称
mysql:jdbc:mysql://localhost:3306/day14 或者
jdbc:mysql:///day14(默认连接本机的数据库)
oracle:jdbc:oracle:thin:@localhost:1521:sid 瘦客户端,比如:玩页游协议
子协议 子子协议 IP 数据库端口号 数据库名称
oracle:jdbc:oracle:thick:@localhost:1521:sid 胖客户端,比如:LOL、魔兽世界(需要下载软件)
与数据库建立连接的方式
第一种:
// public static Connection getConnection(String url, String user, String password)
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day06", "root", "root");
第二种:
// public static Connection getConnection(String url, Properties info)
Properties info = new Properties(); // 要参考数据库文档
info.setProperty("user", "root");
info.setProperty("password", "root");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day06", info);
第三种:
// public static Connection getConnection(String url)
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day06?user=root&password=root");
// 模拟表单form提交的两种方式:GET和POST
实际开发常用第一种。
扩展内容:演示3个案例的话需要写3个main方法,所以有了快速测试的方法 ==> junit技术
}
-------------------------------------------
2、java.sql.Connection接口:一个连接(与数据库连接的一座桥梁)
该接口的实现在数据库驱动jar包中。所有与数据库交互都是基于连接对象的。
3、java.sql.Statement接口:操作sql语句,并返回相应结果的对象(小货车)
该接口的实现在数据库驱动jar包中。用于执行静态 SQL 语句并返回它所生成结果的对象。