了解JDBC
概述
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。
JDBC是接口,驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库!每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。
一个实现的例子
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 1.把Driver注册到JDBC
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.获得连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/WORLD?serverTimezone=UTC","root","123456");
// 3.初始化一个Statement语句,准备好一个UPDATE的SQL,运行之
String sql = "UPDATE ACCOUNT SET BALANCE = 1000";
// 4.关闭
Statement stmt = conn.createStatement();
int count = stmt.executeUpdate(sql);
System.out.println(count);
stmt.close();
conn.close();
}
}
Class.forName是注册驱动。即使代码中没有写Class.forName也可以注册(因为mysql jdbc的jar包在导入时就配置了驱动)
JDBC中的对象
DriverManager:注册驱动
DriverManager工具类,提供注册驱动的方法 registerDriver(),方法的参数是java.sql.Driver,所以我们可以通过如下语句进行注册:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
以上代码不推荐使用,存在两方面不足
1.硬编码,后期不易于程序扩展和维护
2.驱动被注册两次。
public class Driver extends NonRegisteringDriverimplements java.sql.Driver {
static {
try {
java.sql.DriverManager.registerDriver(newDriver());
}catch (SQLException E) {
thrownew RuntimeException("Can't register driver!");
}
}
……
}
Connection:获得数据库的连接
url格式:jdbc:mysql://<IP>:<Port>/<Database>?参数(username、passoword)=值
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/WORLD?serverTimezone=UTC","root","123456");
Statement:获得执行SQL语句的对象
有两种Statement
1.Statement -> createStatement
String sql = "某SQL语句";
//获取Statement语句执行平台
Statement stmt =con.createStatement();
常用方法:
- int executeUpdate(String sql); –执行insert update delete语句,返回的是影响的行数,说明有错
- ResultSet executeQuery(String sql); –执行select语句,返回的是 结果集(效果类似于游标)
- boolean execute(String sql); –执行select返回true 执行其他的语句 返回false.
2.PreparedStatement:不需要构造SQL,更安全
SQL注入风险:猜测你的SQL语句,然后再输入中添加SQL语句