JDBC的概念
*Java DataBase Connectivity Java 数据库连接, Java语言操作数据库
*JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
JDBC的基本步骤
1.导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
右键-->Add As Library
2.注册驱动
3.获取驱动连接对象 Connection
4.获取数据库执行对象 Statement
5.执行数据库语句
6.释放资源
代码实现
public class demo01_JDBC {
public static void main(String[] args) throws Exception {
//【1】导入jar包
//【2】注册驱动
Class.forName("com.mysql.jdbc.Driver");
//【3】获取驱动
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "123");
//【4】用驱动获取数据库执行对象
Statement stat = conn.createStatement();
//【5】执行数据库语句
int num = stat.executeUpdate("Insert into java values (null,'ccc')");
//判断是否成功
if (num!=0){
System.out.println("成功"+num);
}else {
System.out.println("失败"+num);
}
//【6】释放资源
stat.close();
conn.close();
}
}
JDBCUitls工具类
#工具类
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
/**
* 文件的读取,只需要读取一次即可拿到这些值,使用静态代码块
*/
static{
//读取资源文件,获取值
try{
//【1】创建Properties集合类。
Properties pro = new Properties();
//获取src路径下的文件的方式--->ClassLoader 类加载器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
String path = res.getPath();
//【2】加载文件
pro.load(new FileReader(path));
//【3】获取数据,赋值
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
//【4】注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取连接
*/
public static Connection getConnection() throws SQLException{
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
/**
* 释放资源
*/
public static void close(ResultSet rs, Statement stat,Connection conn){
if (rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat != null){
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Propeities配置文件
url=jdbc:mysql://localhost:3306/db3
user=root
password=123
driver=com.mysql.jdbc.Driver
定义的Person类
public class Person {
private int id;
private String name;
public Person() {
}
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
测试类
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Person> list = findAll();
//遍历打印出结果
for (Person person : list) {
System.out.println(person);
}
}
public static List<Person> findAll(){
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
List<Person> list = null;
try {
//使用JDBC工具类获取数据库连接对象
conn=JDBCUtils.getConnection();
//定义sql ,这里的java是数据库表名
String sql= "select * from java";
//获取执行sql的对象
stat = conn.createStatement();
//执行sql
rs = stat.executeQuery(sql);
//遍历结果
Person person = null;
list=new ArrayList<Person>();
while (rs.next()){
//获取数据
int id = rs.getInt("id");
String name = rs.getString("name");
person = new Person(id,name);
list.add(person);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
//使用JDBC工具类释放资源
JDBCUtils.close(rs,stat,conn);
}
return list;
}
}