分布式数据库基础与应用
上QQ阅读APP看书,第一时间看更新

1.4.2 Java操作MySQL

1.下载并安装Java驱动包

Java连接MySQL需要驱动包,那么下载驱动包并解压后得到 jar 库文件,然后在对应的项目中导入该库文件。需注意的是,MySQL 8.0及以上版本的数据库连接有以下不同。

① MySQL 8.0及以上版本的驱动包为mysql-connector-java-8.0.16.jar。

② com.mysql.jdbc.Driver变为com.mysql.cj.jdbc.Driver。

2.连接数据库

以下实例使用JDBC[1]连接MySQL数据库,其中的一些数据(如用户名、密码等)需要读者根据自己的开发环境来配置。

实例

package test;
import java.sql.*;
public class MySQLDemo {
    // MySQL 8.0及以下版本的JDBC 驱动名及数据库统一资源定位符(URL)
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/test";
    // MySQL 8.0及以上版本的JDBC 驱动名及数据库URL
    // static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    // static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=
false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
    // 数据库的用户名与密码需要自己设置
    static final String USER = "root";
    static final String PASS = "123456";
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try{
            // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);
            // 打开链接
            System.out.println("连接数据库……");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            // 执行查询
            System.out.println("实例化Statement对象……");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites";
            ResultSet rs = stmt.executeQuery(sql);
            // 展开结果集数据库
            while(rs.next()){
              // 通过字段检索
              int id = rs.getInt("id");
              String name = rs.getString("name");
              String url = rs.getString("url");
              // 输出数据
              System.out.print("ID: " + id);
              System.out.print(",站点名称: " + name);
              System.out.print(",站点 URL: " + url);
              System.out.print("\n");
          }
          // 完成后关闭
          rs.close();
          stmt.close();
          conn.close();
      }catch(SQLException se){
          // 处理 JDBC 错误
          se.printStackTrace();
      }catch(Exception e){
          // 处理 Class.forName 错误
          e.printStackTrace();
      }finally{
          // 关闭资源
          try{
              if(stmt != null) stmt.close();
          }catch(SQLException se2){
          }// 什么都不做
          try{
              if(conn != null) conn.close();
          }catch(SQLException se){
              se.printStackTrace();
          }
      }
      System.out.println("Goodbye!");
  }
}