一些概念
JDBC API
定义了一系列的接口和类,集成在java.sql和javax.sql包中
DriverManager
管理各种不同的JDBC驱动
JDBC 驱动
负责连接不同类型的数据库
一些方法
加载驱动
Class.forName("JDBC驱动类名称"); Class.forName("JDBC驱动类名称").newstance;
获取数据库连接
Connection conn=DriverManager.getConnection(数据库URL,数据库用户名,密码)
在加载驱动及获取连接过程中,可能会出现异常,因此需要注意进行异常处理
Statement对象
通过Connection对象创建
Statement stmt=conn.createStatement();
用于执行SQL语句
ResultSet结果集
用于存储查询结果
只在执行select语句时返回
PreparedStatement概述
继承自Statement接口
能够对SQL语句进行预编译
PreparedStatement的优势
提高SQL语句执行效率
提高安全性
PreparedStatement的应用
SQL语句使用“?”作为数据占位符
在创建时对SQL语句进行预编译
使用setXxx()方法设置数据
数据库连接
导入相应版本的驱动包
连接数据库
使用statement
package jdbc0403;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class MyTest {
// Mysql8 版本的
// public static final String URL = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=flase&serverTimezone=UTC";
// test为要连接的数据库名称
// Mysql5 版本的
public static final String URL = "jdbc:mysql://localhost:3306/test?Unicode=true&characterEncoding=utf-8";
// 数据库的用户名与密码
public static final String USER = "root";
public static final String PASSWORD = "123456";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
// Scanner sc = new Scanner(System.in);
try {
// 步骤1:加载驱动类
// Mysql 8
// Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
// Mysql 5
Class.forName("com.mysql.jdbc.Driver").newInstance();
// 步骤2:通过DriverManager 获取Connection对象
conn = DriverManager.getConnection(URL, USER, PASSWORD);
// 步骤3:通过Connection对象获取数据库操作对象Statement对象
stmt = conn.createStatement();
// 步骤4:通过数据库操作对象执行sql语句返回结果集ResultSet
// 创建SQL
String sql = "select * from emp";
rs = stmt.executeQuery(sql);
// 步骤5 处理结果集ResultSet
while (rs.next()) {
System.out.println(rs.getInt("empno") + "--" + rs.getString("ename"));
}
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 步骤6:关闭资源
//注意资源关闭的顺序
if (rs != null) {
rs.close();
}
if (stmt == null) {
stmt.close();
}
if (conn == null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
使用PreparedStatement
package jdbc0403;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MyTest2 {
//Mysql8 版本的
//public static final String URL = " jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
//Mysql5 版本的
public static final String URL = "jdbc:mysql://localhost:3306/test?Unicode=true&characterEncoding=utf-8";
public static final String USER ="root";
public static final String PASSWORD="123456";
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//步骤1:加载驱动类
//Mysql 8
//Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
//Mysql 5
Class.forName("com.mysql.jdbc.Driver").newInstance();
//步骤2:通过DriverManager 获取Connection对象
conn = DriverManager.getConnection(URL,USER,PASSWORD);
//步骤3:通过Connection对象获取数据库操作对象Pstatement对象
//预编译 需要sql语句
String sql ="insert into emp(empno,ename) values(?,?)";
pstmt=conn.prepareStatement(sql);
//步骤4:为?进行赋值
pstmt.setInt(1, 25);
pstmt.setString(2, "567");
//执行语句
int i = pstmt.executeUpdate();
System.out.println(i);
//查找
String sqlquery ="select empno,ename from emp where empno=?";
pstmt=conn.prepareStatement(sqlquery);
pstmt.setInt(1,22);
rs= pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("empno")+"--"+rs.getString("ename"));
}
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try{
//步骤6:关闭资源
if(rs!=null){
rs.close();
}
if(pstmt==null){
pstmt.close();
}
if(conn==null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
}