文章目录

  • 1. 概念
  • 2. 执行顺序
  • 3. 代码实现



java连接access数据库要下载驱动 java数据库连接api_bc

1. 概念

JDBC(Java Data Base Connectivity)Java数据库连接,由一些类和接口构成的用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问。

2. 执行顺序

  • DriverManager类注册驱动(只做一次)
  • Connection接口建立连接
  • Statement接口执行创建的SQL语句,PreparedStatement是预编译的Statement,防止SQL注入,由于是预编译的,查询一次之后放到数据库的缓存,下次执行时发现相同,执行效率高
  • ResultSet接口保存Statement执行后所产生的查询结果
  • 释放资源

3. 代码实现

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;

public class Jdbc {
    public static void main(String args[]) {
        Connection connection = null;
        Statement statement = null;
        PreparedStatement preparedStatement = null;
        ResultSet result = null;

        try {
            // 注册数据库驱动
            Class.forName("com.mysql.jdbc.Driver");

            // 连接数据库
            String url = "jdbc:mysql://localhost:3306/jdbc";
            String username = "root";
            String password = "1234";
            connection = DriverManager.getConnection(url, username, password);

            // 通过connection对象获取statement对象
            statement = connection.createStatement();
            // preparedStatement是statement的一个子类 执行相同的SQL语句时会预编译,提高效率,且更加安全
            String sql = "insert into user(name,password)" + "values(?,?)";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "张");
            preparedStatement.setString(2, "1234");
            preparedStatement.executeUpdate();

            statement.addBatch("INSERT INTO users(id, name, password) VALUES(1, 'zs', '11')");
            statement.addBatch("INSERT INTO users(id, name, password) VALUES(2, 'c', '1')");
            statement.addBatch("INSERT INTO users(id, name, password) VALUES(3, 'z', '1')");
            statement.addBatch("INSERT INTO users(id, name, password) VALUES(4, 'd', '1')");
            statement.addBatch("INSERT INTO users(id, name, password) VALUES(5, 'e', '1')");
            statement.addBatch("INSERT INTO users(id, name, password) VALUES(6, 'r', '7')");
            statement.addBatch("INSERT INTO users(id, name, password) VALUES(7, 'q', '8')");
            statement.addBatch("INSERT INTO users(id, name, password) VALUES(8, 't', '9')");
            statement.addBatch("INSERT INTO users(id, name, password) VALUES(9, 'y', '8')");
            statement.addBatch("INSERT INTO users(id, name, password) VALUES(10, 'i', '6')");
            statement.executeBatch();

            String sql1 = "select * from users";
            result = statement.executeQuery(sql1);// 通过statement对象执行sql语句

            // 返回结果集
            System.out.println("id | name |password");
            while (result.next()) {
                int id = result.getInt("id");
                String name = result.getString("name");
                String pass = result.getString("password");
                System.out.println(id + "  | " + name + "  |  " + pass);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        finally {
            if (result != null) {
                try {
                    result.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                result = null;
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                result = null;
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                result = null;
            }
        }
    }
}