文章目录
JDBC基本概念
Java DataBase Connectivity Java 数据库连接,Java语言操作数据库
JDBC:定义了一套操作所有关系型数据库的规则(接口),各个数据库的厂商去实现这套接口,提供数据库驱动jar包。我们需要实现这些接口里面的具体实现类
JDBC快速入门
步骤
- 导入驱动jar包
复制jar包到lib下面
右键选择Add as Library
- 注册驱动
Class.forName("com.mysql.jdbc.driver");
Connection connection = DriverManager.getConnection(url,user,psw);
- 获取数据库连接对象Connection
Statement statement = connection.createStatement();
- 定义sql
- 获取执行sql语句的对象Statement
- 执行sql,接收返回值
statement.executeUpdate(sql);
- 处理结果
- 释放资源
connection.close();
JDBC各个类详解
DriverManger驱动管理
功能:
- 注册驱动:告诉程序需要用哪一个
static void registerDriver(Driver driver):注册于给定的驱动程序
写代码使用:Class.forName(“com.mysql.jdbc.Driver”)
通过查看源码发现:在Driver类中存在静态代码块
static {
try{
java.sql.DriverManger.registerDriver(new Driver());
}catch(SQLException E){
throw new RunntimeException("cant register driver");
}
}
- 获取数据库连接
方法:static Connection getConnection(url,user,psw);
参数:
url
指定连接路径
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
例子:jdbc:mysql://localhost:3306/db3
细节:如果连接的是本机的mysql服务器,并且mysql服务器默认的端口号3306,则url可以简写为jdbc:mysql:///数据库名称
Connection数据库连接
功能:
- 获取执行sql语句的对象
Statement createment()
PreparesStatement prepareStatement(String sql) - 管理事务
开启事务void setAutoCommit(boolean autoCommit)调用该方法设置参数为false,即开启事务
提交事务commit()
撤销事务 roolback()
Statement执行sql
- 执行sql的对象
1.boolean excute(String sql)可以执行任意sql(了解)
2.int excuteUpdate(String sql):返回的是影响的行数,执行的是DML(insert,update,delete),DDL(create,alter,drop)
3.ResultSet excuteQuery(String sql):执行DQL(select)语句
ResultSet 结果集
封装查询结果
1.boolen next()方法 把光标从当前行移到下一行
2. getXXX()获取数据 XXX代表数据类型
//6. 运行sql语句
ResultSet rs = statement.executeQuery(sql);
rs.next();
String name = rs.getString("name");
String sex = rs.getString("sex");
int age = rs.getInt("age");
使用步骤:
- 游标向下移动一行
- 判断是否有数据
- 获取数据
PreparedStatement执行sql
主要
简单JDBC编写
//1. 导入驱动jar包
//2. 注册驱动
Class.forName("com.mysql.jdbc.driver");
//3. 获取数据库连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "root");
//4. 获取执行数据库的对象
Statement statement = connection.createStatement();
//5. 编写sql语句
String sql = "";
//6. 运行sql语句
statement.execute(sql);
//7. 处理结果
System.out.println();
//8. 释放资源
connection.close();
JDBC工具类
package utils;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String root;
private static String psw;
static{
try {
//1.创建集合类
Properties properties = new Properties();
//2. 加载文件
properties.load(new FileReader("pro.properties"));
//3. 数据赋值
url = properties.getProperty("url");
root = properties.getProperty("root");
psw = properties.getProperty("psw");
//4.注册驱动
Class.forName("com.mysql.jdbc.driver");
DriverManager.getConnection(url,root,psw);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,root,psw);
}
public static void close(ResultSet resultSet,Statement statement, Connection connection ){
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}