前言:JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。简单来说就是java操作数据库,jdbc是oracle公司指定的一套规范。
---------作用--------
JDBC的作用:发送数据库,发送SQL语句,处理结果。
提示:如果你还对SQL还不是很了解的话建议翻看《Java EE开发第一二三章》
------操作步骤---------
JDBC的操作步骤:
1.创建数据库和表
2.创建一个Java项目
3.导入JDBC的驱动jar包(百度一大把)
4.撸代码:注册驱动、获取连接、编写SQL语句、创建预编译的语句执行者、设置参数、执行SQL语句、处理结果、释放资源。
---------代码实现--------
打开MYSQL进行初始化数据库和表:
CREATE DATABASE day07;
USE day07;
create table category(
cid varchar(20) primary key,
cname varchar(20)
);
insert into category values('c001','电器');
insert into category values('c002','服饰');
insert into category values('c003','化妆品');
insert into category values('c004','书籍');
Java代码:
@Test
public void f2() throws Exception {
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// DriverManager.registerDriver(new Driver());
// 获取链接
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/day07", "root", "123");
// 编写sql
String sql = "select * from category";
// 创建语句执行者
PreparedStatement st = conn.prepareStatement(sql);
// 设置参数
// 执行sql
ResultSet rs = st.executeQuery();
//处理结果
while(rs.next()){
System.out.println(rs.getString("cid")+"::"+rs.getString("cname"));
}
rs.close();
st.close();
conn.close();
}
运行截图:
----------配置文件以及工具类的实现----------
不难发现,如果我们想继续再次操作数据库进行增删改查的话,免不得又要重复以上代码,特别是数据库的链接以及登陆账号密码,所以我们需要在src目录下配置文件为properties,通过 ResourceBundle工具快速获取里面的配置信息。
使用步骤:
1.获取ResourceBundle 对象:static ResourceBundle getBundle("文件名称不带后缀名")
2.通过ResourceBundle 对象获取配置信息 :String getString(String key) :通过执行key获取指定的value
这是我的配置文件:(请无视我的账号名字和密码)
当然了为了方便使用jdbc我们可以写一个jdbc的工具类(释放资源作用):
package com.fly.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;
public class JdbcUtils {
static final String DRIVERCLASS;
static final String URL;
static final String USER;
static final String PASSWORD;
static {
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
// 获取指定的内容
DRIVERCLASS = bundle.getString("driverClass");
URL = bundle.getString("url");
USER = bundle.getString("user");
PASSWORD = bundle.getString("password");
}
static {
// 注册驱动
try {
Class.forName(DRIVERCLASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 获取链接
public static Connection getConnection() throws Exception {
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
return conn;
}
/**
*
* @param conn链接
* @param st语句执行者
* @param rs结果集
*/
public static void closeResource(Connection conn, Statement st, ResultSet rs) {
closeResultSet(rs);
closeStatement(st);
closeConn(conn);
}
/**
* 释放链接
*
* @param conn 链接
*/
private static void closeConn(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn = null;
}
}
/**
* 释放语句执行者
*
* @param st语句执行者
*/
private static void closeStatement(Statement st) {
if (st != null) {
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
st = null;
}
}
/**
* 释放结果集
*
* @param rs结果集
*/
private static void closeResultSet(ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rs = null;
}
}
}
-------
数据库的增删改查------
工具类已经实现了,ok接下来我们借助工具类往数据库中插入一条数据库:
@Test
public void f3(){
Connection conn = null;
ResultSet rs = null;
PreparedStatement st = null;
try {
//获取链接
conn = JdbcUtils.getConnection();
//编写sql
String sql = "insert into category values(?,?)";
//获取语句执行者
st = conn.prepareStatement(sql);
//设置参数
st.setString(1, "coo6");
st.setString(2, "户外");
//执行sql
int i = st.executeUpdate();
//处理结果
if(i == 1){
System.out.println("success");
}else {
System.out.println("fail");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
//释放资源
JdbcUtils.closeResource(conn, st, rs);
}
}
更新数据:
//更新数据
@Test
public void f4(){
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
String sql = "update category set cname = ? where cid = ?";
st = conn.prepareCall(sql);
st.setString(1, "手机");
st.setString(2, "coo6");
int i = st.executeUpdate();
if(i == 1){
System.out.println("success");
}else {
System.out.println("fail");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭资源
JdbcUtils.closeResource(conn, st, rs);
}
}
删除数据:
@Test
public void f5(){
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
String sql = "delete from category where cid = ?";
st = conn.prepareCall(sql);
st.setString(1, "coo6");
int i = st.executeUpdate();
if (i == 1) {
System.out.println("success");
}else {
System.out.println("fail");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtils.closeResource(conn, st, rs);
}
}
-------完-----