数据库学习:JDBC


了解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语句


文章作者: 银色回廊
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 银色回廊 !
评论
  目录