浩瀚

Java连接MySql数据库

Java连接数据库的两种方式:

1、使用JDBC-ODBC方式连接

由于JDBC-ODBC桥连方式不能提供非常好的性能,且只能用于Windows平台服务器,可移植性不好,一般不适合在实际系统中使用,所以请看第二种方式。

2、使用纯java方式连接数据库:

纯java驱动方式由JDBC驱动直接访问数据库,驱动程序完全用java语言编写。

  • 优点:运行速度快,具有跨平台特点
  • 缺点:技术资料的限制,这类JDBC驱动一般只能由数据库厂商自己提供,即这类JDBC驱动只对应一种数据库,甚至只能对应某个版本的数据库,如果数据库更换了或者版本升级了,一般需要更换JDBC驱动程序。

使用纯java驱动方式进行数据库连接,首先需要下载数据库厂商提供的驱动程序:jar包,并将jar包引入工程中。我们这里使用MySql8.0,这里jar包需要使用8.x版本

纯java驱动方式的工作原理:

java应用程序-->JDBC API --> JDBC驱动 --> DB Server

示例代码:

1、首先我们需要加载驱动

Connection conn = null;
//8.x版本jar包需要导入:com.mysql.cj.jdbc.Driver
//5.x版本jar包需要导入:com.mysql.jdbc.Driver
try{
    Class.forName(“com.mysql.cj.jdbc.Driver”);
}catch(ClassNotFoundException e){
    
}

2、建立连接

try{
    conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/myschool?useSSL=false&serverTimezone=UTC”,”root”,”pwd”);
    System.out.println(“连接MySql数据库成功”);
}catch(SQLException e){
    System.out.println(“连接失败”);
}finally{
    try{
    //关闭数据库连接
    //先判断Connection接口是否成功连接
    if(conn!=null){
        conn.close();
    }
    }catch(SQLException e){

    }
}

5.x版本jar包需要把
jdbc:mysql://localhost:3306/myschool?useSSL=false&serverTimezone=UTC
替换为
jdbc:mysql://localhost:3306/myschool

这句字符串表示:
localhost为数据库地址,我们这里采用本地方式连接
3306为数据库端口
myschool为连接数据库的名称
root为数据库的账号
pwd为数据库的密码

Java连接数据库注意点:

  • JDBC驱动类的名称书写错误会出现CLassNotFoundException异常
  • 数据连接字符串,数据库用户名密码错误会出现SQLException异常
  • 数据库操作结束后没有关闭数据库连接,导致任旧占用系统资源
  • 关闭数据库连接语句没有放到finally语句块中,导致语句可能没有被执行

完整代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public static void main(String[] args) {
Connection conn = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool?useSSL=false&serverTimezone=UTC", "root", "root");
            System.out.println("连接成功");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if(conn!=null) {
                    conn.close();
                    System.out.println("关闭成功");
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }