JDBC
Java Database Connectivity 是一个独立于特定数据库的管理系统,通用的 SQL 数据库存取和操作的公共接口。
定义一组标准,为访问不同数据库提供了统一途径。
JDBC API
提供者:Java 官方
内容:供开发者调用的接口
java.sql 或者 javax.sql 包中
-
DriverManager 类:管理数据库驱动
-
Connection 接口:连接数据库
-
Statement 接口:执行 SQL
-
ResultSet 接口:封装结果集
Driver Manager
提供者:Java 官方
作用:为不同的数据库产品提供统一的接入标准。
JDBC 驱动
提供者:数据库厂商
作用:让 Java 完成与特定数据库的对接。
使用 JDBC 原理
1、加载数据库驱动,Java Application 和 数据库的桥梁。
2、获取 Connection,一次连接。
3、通过 Connection 对象产生 Statement,执行 SQL 语句。
4、ResultSet 保存 Statment 执行后所产生的结果。
package com.m.jdbc;
import com.m.jdbc.util.JDBCTools;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
public static void main(String[] args) {
findAll();
}
/**
* i=0是新增,i=1是修改,i=2的删除
* @param i
*/
public static void saveOrUpdateOrDelete(int i){
Connection connection = JDBCTools.getConnection();
//3、定义 SQL
String sql = null;
switch (i){
case 0:
sql = "insert into student(name) values('张三')";
break;
case 1:
sql = "update student set name = '杨三' where id = 1";
break;
case 2:
sql = "delete from student where id = 2";
break;
}
Statement statement = null;
try {
statement = connection.createStatement();
int result = statement.executeUpdate(sql);
System.out.println(result);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCTools.release(connection,statement,null);
}
}
public static void findAll(){
Connection connection = JDBCTools.getConnection();
String sql = "select * from student";
Statement statement = null;
ResultSet resultSet = null;
try {
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
System.out.println(resultSet.next());
while(resultSet.next()){
int id = resultSet.getInt(1);
String name = resultSet.getString(2);
System.out.println(id+"-"+name);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCTools.release(connection,statement,resultSet);
}
}
}
JDBCTools工具类
package com.m.jdbc.util;
import java.sql.*;
public class JDBCTools {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
String url = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8";
String user = "root";
String password = "root";
Connection connection = null;
try {
connection = DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void release(Connection connection, Statement statement, ResultSet resultSet){
try {
if(connection!=null){
connection.close();
}
if(statement!=null){
statement.close();
}
if(resultSet!=null){
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Statement 的方法,Statement 是通过 Connection 产生的,是用来执行 SQL 语句的,常用的方法:
-
ResultSet executeQuery(String sql) 用来执行查询操作。
-
int executeUpdate(String sql) 用来执行新增,修改,删除操作。
-
boolean execute(String sql) 可以执行任意的 CRUD 操作。
true 表示返回结果是 ResultSet,执行的是查询操作。
false 表示返回结果不是 ResultSet,执行的是新增、修改、删除操作。