##JDBC开发步骤
1,创建数据库
a:SQLyang连接数据库,但不选择任意一个具体数据库
b:创建一个新的数据库,库名叫mydb
#创建数据库
CREATE DATABASE MYDB;
c:创建分类表
#创建分类表
CREATE TABLE USER(
CID INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
)
d:初始化数据
#初始化数据
INSERT INTO USER VALUES(NULL,'遇过');
INSERT INTO USER VALUES(NULL,'玉果');
INSERT INTO USER VALUES(NULL,'余果');
2,创建Java项目准备环境
a:在学习JDBC阶段,我们所使用的都是Javase项目,并非web项目
b:检查Eclipse配置
编码格式为UTF_8
单元测试可以使用
c:导入jar
创建专门用于存放jar包的文件夹
mySQL的jar包(驱动):mysql-connector-java-5.1.28-bin.jar
将jar包手动buildpath
3,完成Java代码
a:注册SQL驱动
Class.forName("com.mysql.jdbc.Driver")
b:通过DriverManger来获取到数据库的链接
# 准备工作
a:url :数据库的位置 user:数据库的登录用户名 password:数据库登录时所需的密码
String url = "jdbc:mysql://localhost:3306/MYDB";
String user = "root";
String password = "99312";
b:通过DriverManager来获取链接对象
Connection conn = DriverManager.getConnection(url,user,password);
d:通过链接对象获取SQL发射器
PrepareStatement pre = conn.PrepareStatement("secelt * from user");
e:执行发射器获取结果集
ResultSet res = pre.executQuery();
f:处理结果集
a、ResultSet是SQL结果集类型,类似于迭代器
b、方法说明:
-next:获取到下一条数据
while( res.next ){
int col1 = getInt(1);
String col2 = getString(2);
System.out.println(col1+":"+col2);
System.out.println("=======");
}
f:关闭资源
所需关闭资源:结果集对象,发射器对象,连接对象
res.close;
pre.close;
conn.close;
##JDBC步骤与对象详解:
1.注册mysql驱动
做什么:让jdbc使用mysql的驱动jar
固定代码:Class.forName("com.mysql.jdbc.Driver");
数据库驱动类的名称:com.mysql.jdbc.Driver是固定的,每个数据库厂商提供不同
2.获取连接对象
做什么:获得连接对象,与数据库连接上
固定代码:
java.sql.Connection conn = DriverManager.getConnection(url,user,password);
参数解释:
url:jdbc:mysql://127.0.0.1:3306/mydb 数据库位置
user:root 数据库用户名
password:123 数据库密码
3.通过连接对象获取SQL的发射器
做什么:准备发出SQL代码
固定代码:
String sql = "某SQL语句";
PreparedStatement pst = conn.prepareStatement(sql);
4.发射器执行SQL语句(PreparedStatement:执行sql的sql发射器对象)
做什么:发送SQL语句
a、查询语句,使用ResultSet executeQuery(String sql); --执行select语句,会返回结果集
ResultSet result = prep.executeQuery();
b、增、删、改用同一个语句int executeUpdate(String sql); --执行insert update delete语句,不会返回结果集
prep.executeUpdte();
5.如果是查询语句,则需要处理结果集(ResultSet:结果集对象)
做什么:从结果集对象中获取数据
结果集常用方法:
-next:获取到下一条数据,有下一条返回true,没有下一条返回false
-getString(列序号):获取该行数据第几列(该列必须为字符串)
-getInt(列序号):获取该行数据第几列(该列必须为整数)
-getDouble(列序号):获取该行数据第几列(该列必须为小数)
-getObject(列序号):获取该行数据第几列(该列为任意类型)
-getString(列名):获取该行数据指定列名的值(该列必须为字符串)
-getInt(列名):获取该行数据指定列名的值(该列必须为整数)
-getDouble(列名):获取该行数据指定列名的值(该列必须为小数)
-getObject(列名):获取该行数据指定列名的值(该列为任意类型)
结果集固定格式:
while(result.next()) { //判断是否有下一条数据,并且如果有下一条数据,将指向下一条数据
String cid = result.getString(1);
String cname = result.getString(2);
System.out.println("cid:"+cid+"-------cname:"+cname);
System.out.println("=============================================");
}
6.释放资源
做什么:将数据库的资源释放出来,供其他数据库的使用者使用。
需要关闭的资源:
结果集ResultSet、发射器PrepareStatment、连接对象Coonnection
##封装JDBC工具类:为了加强代码的复用性,使用JDBC注册驱动,获取连接对象,关闭资源
package myJDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCUtils {
//后续,这些常量可以从配置文件中读取
private static String URL = "jdbc:mysql://localhost:3306/mydb";
private static String USER = "root";
private static String PASSWORD = "123";
//注册驱动,只需要执行一次,放到静态代码块中
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
//获取连接
public static Connection getConn() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
//关闭资源
public static void closeResource(Connection conn,PreparedStatement pst,ResultSet rs) {
//先滤空,不为空再关闭
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if(pst!=null) {
try {
pst.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
preparedStatement带参数使用
概念:preparedStatement预编译对象,用于发出SQL语句,得到SQL的执行结果
特点:
提高性能
完成预编译动作(将SQL中的?换位其他数据)
能过滤用户输入的值
避免SQL注入类似的问题,提高安全性
带参数操作:
可以将SQL一些数据作为参数传递,先使用?占位,再使用实际值替换?
步骤:
1、使用带?的SQL创建preparedStatement对象
2、将?替换成实际值
3、发射对应的完整SQL语句,得到结果
##连接池
用于提升性能,这里使用druid-1.1.9.jar
使用连接池,重构JDBC工具类
步骤:
1、导入druid-1.1.9.jar
2、获取配置文件当中连接池的配置数据
工具类名称:DruidUtil
static{
//读取配置文件信息为输入流对象
InputStream is = DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties");
//将配置文件按信息的输入流对象 读取到Properties中
Properties prop = new Properties();
prop.load(is);
//获得连接池,调用DruidDataSourceFactory德鲁伊连接池工厂类,创建连接池,使用Properties中的内容
dataSource = DruidDataSourceFactory.createDataSource(prop);
}
//====以下为配置文件信息============================================
配置文件名称:Druid.properties 位置:src根目录下
driverClassName = com.mysql.jdbc.Driver //驱动名称
url = jdbc:mysql://localhost:3306/mydb //连接URL
username = root //用户名
password = 123 //密码
initialSize = 5 //初始连接数
maxActive = 10 //最大并行连接数
minIdle = 3 //最小空闲数
maxWait = 60000 //最大等待时间
3、获取连接方法实现
声明:
public static Connection getConnection()
内容实现:
在成员变量位置,定义DataSource(连接池)成员变量,方便本方法的使用
DataSource dataSource;
在本方法中,使用成员部分的连接池对象,获取连接,并返回
return dataSource.getConnection();
4、关闭资源方法实现
与之前相同,此次关闭连接,不再是真正关闭,而是归还到了连接池中
1,创建数据库
a:SQLyang连接数据库,但不选择任意一个具体数据库
b:创建一个新的数据库,库名叫mydb
#创建数据库
CREATE DATABASE MYDB;
c:创建分类表
#创建分类表
CREATE TABLE USER(
CID INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
)
d:初始化数据
#初始化数据
INSERT INTO USER VALUES(NULL,'遇过');
INSERT INTO USER VALUES(NULL,'玉果');
INSERT INTO USER VALUES(NULL,'余果');
2,创建Java项目准备环境
a:在学习JDBC阶段,我们所使用的都是Javase项目,并非web项目
b:检查Eclipse配置
编码格式为UTF_8
单元测试可以使用
c:导入jar
创建专门用于存放jar包的文件夹
mySQL的jar包(驱动):mysql-connector-java-5.1.28-bin.jar
将jar包手动buildpath
3,完成Java代码
a:注册SQL驱动
Class.forName("com.mysql.jdbc.Driver")
b:通过DriverManger来获取到数据库的链接
# 准备工作
a:url :数据库的位置 user:数据库的登录用户名 password:数据库登录时所需的密码
String url = "jdbc:mysql://localhost:3306/MYDB";
String user = "root";
String password = "99312";
b:通过DriverManager来获取链接对象
Connection conn = DriverManager.getConnection(url,user,password);
d:通过链接对象获取SQL发射器
PrepareStatement pre = conn.PrepareStatement("secelt * from user");
e:执行发射器获取结果集
ResultSet res = pre.executQuery();
f:处理结果集
a、ResultSet是SQL结果集类型,类似于迭代器
b、方法说明:
-next:获取到下一条数据
while( res.next ){
int col1 = getInt(1);
String col2 = getString(2);
System.out.println(col1+":"+col2);
System.out.println("=======");
}
f:关闭资源
所需关闭资源:结果集对象,发射器对象,连接对象
res.close;
pre.close;
conn.close;
##JDBC步骤与对象详解:
1.注册mysql驱动
做什么:让jdbc使用mysql的驱动jar
固定代码:Class.forName("com.mysql.jdbc.Driver");
数据库驱动类的名称:com.mysql.jdbc.Driver是固定的,每个数据库厂商提供不同
2.获取连接对象
做什么:获得连接对象,与数据库连接上
固定代码:
java.sql.Connection conn = DriverManager.getConnection(url,user,password);
参数解释:
url:jdbc:mysql://127.0.0.1:3306/mydb 数据库位置
user:root 数据库用户名
password:123 数据库密码
3.通过连接对象获取SQL的发射器
做什么:准备发出SQL代码
固定代码:
String sql = "某SQL语句";
PreparedStatement pst = conn.prepareStatement(sql);
4.发射器执行SQL语句(PreparedStatement:执行sql的sql发射器对象)
做什么:发送SQL语句
a、查询语句,使用ResultSet executeQuery(String sql); --执行select语句,会返回结果集
ResultSet result = prep.executeQuery();
b、增、删、改用同一个语句int executeUpdate(String sql); --执行insert update delete语句,不会返回结果集
prep.executeUpdte();
5.如果是查询语句,则需要处理结果集(ResultSet:结果集对象)
做什么:从结果集对象中获取数据
结果集常用方法:
-next:获取到下一条数据,有下一条返回true,没有下一条返回false
-getString(列序号):获取该行数据第几列(该列必须为字符串)
-getInt(列序号):获取该行数据第几列(该列必须为整数)
-getDouble(列序号):获取该行数据第几列(该列必须为小数)
-getObject(列序号):获取该行数据第几列(该列为任意类型)
-getString(列名):获取该行数据指定列名的值(该列必须为字符串)
-getInt(列名):获取该行数据指定列名的值(该列必须为整数)
-getDouble(列名):获取该行数据指定列名的值(该列必须为小数)
-getObject(列名):获取该行数据指定列名的值(该列为任意类型)
结果集固定格式:
while(result.next()) { //判断是否有下一条数据,并且如果有下一条数据,将指向下一条数据
String cid = result.getString(1);
String cname = result.getString(2);
System.out.println("cid:"+cid+"-------cname:"+cname);
System.out.println("=============================================");
}
6.释放资源
做什么:将数据库的资源释放出来,供其他数据库的使用者使用。
需要关闭的资源:
结果集ResultSet、发射器PrepareStatment、连接对象Coonnection
##封装JDBC工具类:为了加强代码的复用性,使用JDBC注册驱动,获取连接对象,关闭资源
package myJDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCUtils {
//后续,这些常量可以从配置文件中读取
private static String URL = "jdbc:mysql://localhost:3306/mydb";
private static String USER = "root";
private static String PASSWORD = "123";
//注册驱动,只需要执行一次,放到静态代码块中
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
//获取连接
public static Connection getConn() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
//关闭资源
public static void closeResource(Connection conn,PreparedStatement pst,ResultSet rs) {
//先滤空,不为空再关闭
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if(pst!=null) {
try {
pst.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
preparedStatement带参数使用
概念:preparedStatement预编译对象,用于发出SQL语句,得到SQL的执行结果
特点:
提高性能
完成预编译动作(将SQL中的?换位其他数据)
能过滤用户输入的值
避免SQL注入类似的问题,提高安全性
带参数操作:
可以将SQL一些数据作为参数传递,先使用?占位,再使用实际值替换?
步骤:
1、使用带?的SQL创建preparedStatement对象
2、将?替换成实际值
3、发射对应的完整SQL语句,得到结果
##连接池
用于提升性能,这里使用druid-1.1.9.jar
使用连接池,重构JDBC工具类
步骤:
1、导入druid-1.1.9.jar
2、获取配置文件当中连接池的配置数据
工具类名称:DruidUtil
static{
//读取配置文件信息为输入流对象
InputStream is = DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties");
//将配置文件按信息的输入流对象 读取到Properties中
Properties prop = new Properties();
prop.load(is);
//获得连接池,调用DruidDataSourceFactory德鲁伊连接池工厂类,创建连接池,使用Properties中的内容
dataSource = DruidDataSourceFactory.createDataSource(prop);
}
//====以下为配置文件信息============================================
配置文件名称:Druid.properties 位置:src根目录下
driverClassName = com.mysql.jdbc.Driver //驱动名称
url = jdbc:mysql://localhost:3306/mydb //连接URL
username = root //用户名
password = 123 //密码
initialSize = 5 //初始连接数
maxActive = 10 //最大并行连接数
minIdle = 3 //最小空闲数
maxWait = 60000 //最大等待时间
3、获取连接方法实现
声明:
public static Connection getConnection()
内容实现:
在成员变量位置,定义DataSource(连接池)成员变量,方便本方法的使用
DataSource dataSource;
在本方法中,使用成员部分的连接池对象,获取连接,并返回
return dataSource.getConnection();
4、关闭资源方法实现
与之前相同,此次关闭连接,不再是真正关闭,而是归还到了连接池中