JDBC 连接MySQL实例详解

JDBC连接MySQL实例详解

什么是JDBC?

JDBC是Java Database Connectivity的缩写,是一种用于执行SQL语句的Java API。通过JDBC,我们可以直接连接到各种数据库,与之交互(如执行查询、更新等操作)。

JDBC连接MySQL的准备工作

在使用JDBC连接MySQL之前,需要先进行以下准备工作:
1. 下载MySQL的JDBC驱动(即JDBC的实现),并将其放入CLASSPATH中。我们可以在MySQL官网下载驱动,或者在Maven等仓库中获取它。下面演示的代码使用了Maven,pom.xml中需加入以下依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>
  1. 创建MySQL数据库(如未创建)及数据表,并设置一个用于连接的MySQL用户及其密码。这里不再做详细介绍。

使用JDBC连接MySQL

接下来演示如何通过JDBC连接MySQL、创建表、插入、查询数据等操作。下面是一个简单的样例代码:

import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) {
        try {
            // 1.加载数据库驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2.连接数据库
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testdb",
                    "testuser",
                    "testpass");

            // 3.创建Statement
            Statement stmt = conn.createStatement();

            // 4.创建表
            String tableSql = "CREATE TABLE Employee " +
                    "(id INT not NULL, " +
                    " name VARCHAR(255), " +
                    " age INT, " +
                    " PRIMARY KEY ( id ))";
            stmt.executeUpdate(tableSql);

            // 5.插入数据
            String insertSql = "INSERT INTO Employee " +
                    "(id, name, age) " +
                    "VALUES (1, 'Tom', 20)";
            stmt.executeUpdate(insertSql);

            // 6.查询数据
            String selectSql = "SELECT id, name, age FROM Employee WHERE id=1";
            ResultSet rs = stmt.executeQuery(selectSql);
            if (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("id=" + id + ", name=" + name + ", age=" + age);
            }

            // 7.关闭资源
            rs.close();
            stmt.close();
            conn.close();

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

注:上述代码为演示使用,没有考虑异常、线程安全等问题,仅供参考。下面对代码的各个部分进行解释。

加载数据库驱动程序

JDBC是通过驱动程序来运行的,驱动程序的实现由各个数据库厂商提供。使用JDBC时,需要先加载该驱动程序。一般通过Class.forName()方法进行加载。

Class.forName("com.mysql.cj.jdbc.Driver");

上面的代码表示加载MySQL的驱动程序,使用的是MySQL Connector/J 8.0版本的驱动程序。

连接数据库

DriverManager.getConnection()方法用于创建连接。该方法需要三个参数:URL、用户名和密码。

Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testdb",
                    "testuser",
                    "testpass");

上面的代码中URL表示连接的目标数据库,其格式为:

jdbc:mysql://[host][:port]/[database]?[properties]

其中,[host]表示主机名,[port]表示端口号(MySQL默认使用3306端口),[database]表示连接的数据库名,[properties]则表示数据库的其他配置(如连接要用到的字符集)。上面的代码连接的数据库为名为testdb的数据库,用户名为testuser,密码为testpass的用户。

创建Statement

Statement表示执行SQL语句、查询并更新数据的对象,通过连接创建即可。例如:

Statement stmt = conn.createStatement();

上述代码创建了一个Statement对象stmt,以便后续执行SQL语句。

创建表

使用SQL语句创建表:

String tableSql = "CREATE TABLE Employee " +
                    "(id INT not NULL, " +
                    " name VARCHAR(255), " +
                    " age INT, " +
                    " PRIMARY KEY ( id ))";
stmt.executeUpdate(tableSql);

上述代码表示创建了一个名为Employee的表,包含id、name、age三个字段,其中id为主键(PRIMARY KEY)。

插入数据

使用SQL语句向Employee表中插入一行数据:

String insertSql = "INSERT INTO Employee " +
                    "(id, name, age) " +
                    "VALUES (1, 'Tom', 20)";
stmt.executeUpdate(insertSql);

上述代码表示向Employee表中插入了一行数据,id为1,name为Tom,age为20。

查询数据

使用SQL语句查询Employee表中id为1的记录:

String selectSql = "SELECT id, name, age FROM Employee WHERE id=1";
ResultSet rs = stmt.executeQuery(selectSql);
if (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    int age = rs.getInt("age");
    System.out.println("id=" + id + ", name=" + name + ", age=" + age);
}

上述代码表示查询Employee表中id等于1的记录,并将查询结果输出到控制台上。

关闭资源

在使用JDBC过程中,需要注意关闭资源,释放连接。例如:

rs.close();
stmt.close();
conn.close();

上述代码依次关闭ResultSet、Statement和Connection对象,以释放与数据库的连接。

至此,我们就完成了一个简单的JDBC连接MySQL实例的操作。在实际应用中,还需要注意异常处理、资源释放、线程安全等问题。

示例说明

下面是两个使用JDBC连接MySQL的示例说明。

示例1:从MySQL数据库中读取数据,输出到控制台

import java.sql.*;

public class ReadFromDB {
    public static void main(String[] args) {
        try {
            // 1.加载数据库驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2.连接数据库
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testdb",
                    "testuser",
                    "testpass");

            // 3.创建Statement
            Statement stmt = conn.createStatement();

            // 4.查询数据
            String selectSql = "SELECT id, name, age FROM Employee";
            ResultSet rs = stmt.executeQuery(selectSql);
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("id=" + id + ", name=" + name + ", age=" + age);
            }

            // 5.关闭资源
            rs.close();
            stmt.close();
            conn.close();

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

上述代码演示了如何从MySQL数据库中读取Employee表中的数据,并将结果输出到控制台上。

示例2:向MySQL数据库中插入数据

import java.sql.*;

public class WriteToDB {
    public static void main(String[] args) {
        try {
            // 1.加载数据库驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2.连接数据库
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testdb",
                    "testuser",
                    "testpass");

            // 3.创建Statement
            Statement stmt = conn.createStatement();

            // 4.插入数据
            String insertSql = "INSERT INTO Employee " +
                    "(id, name, age) " +
                    "VALUES (2, 'Mary', 25)";
            stmt.executeUpdate(insertSql);

            // 5.关闭资源
            stmt.close();
            conn.close();

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

上述代码演示了如何向MySQL数据库的Employee表中插入一行数据,该行数据的id为2,name为Mary,age为25。

参考资料

  1. JDBC Tutorial
  2. MySQL Connector/J

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JDBC 连接MySQL实例详解 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • MySQL存储毫秒数据的方法

    MySQL存储毫秒数据的方法可以通过以下两个步骤来实现。 步骤一:定义表结构 在 MySQL 中定义表结构时,建议使用 datetime(3) 来定义时间类型,其中的 3 代表精度,表示支持毫秒级别的存储。同时,在定义表结构时,还需要为其中的时间列添加索引,以提高查询效率。以下是一个示例表结构的定义: CREATE TABLE `example_table`…

    database 2023年5月22日
    00
  • sqoop读取postgresql数据库表格导入到hdfs中的实现

    sqoop读取postgresql数据库表格导入到hdfs中的实现 Sqoop是一个开源工具,用于将关系型数据库和数据仓库(例如PostgreSQL)中的数据传输到Hadoop的HDFS(Hadoop分布式文件系统)/ Hive中。Sqoop支持批量导入和导出,支持多种数据源的数据传输。 步骤一:安装sqoop 首先,下载和安装sqoop所需的jar包以及h…

    database 2023年5月18日
    00
  • mysql 数据库取前后几秒 几分钟 几小时 几天的语句

    MySQL提供了丰富的函数来获取当前时间以及进行时间计算,下面我会详细讲解如何使用这些函数来实现取前后指定时间段的查询。 1. 获取当前时间 在MySQL中,可以使用NOW()函数来获取当前的日期和时间,它的返回值是一个DATETIME类型。 SELECT NOW(); 执行上面的语句会输出如下结果: +———————+ | NO…

    database 2023年5月22日
    00
  • SQL 更新记录

    下面是SQL更新记录的完整攻略: SQL更新记录 在SQL中,更新记录是指将表中一个或多个记录的某个或某些属性值修改为新的值。更新记录可以使用UPDATE语句完成。 UPDATE语句 UPDATE语句用于更新表中的记录。它的基本语法如下: UPDATE table_name SET column1 = value1, column2 = value2, ..…

    database 2023年3月27日
    00
  • centos 7.0 编译 安装mysql 5.6.22 过程 已完成~ 成功~ 撒花~

      mysql 下载目录/usr/local/srcmysql 解压目录 /usr/local/bin/mysql GitHub https://github.com/mysql/mysql-server   mysql官网的安装说明http://dev.mysql.com/doc/refman/5.6/en/source-installation.html…

    MySQL 2023年4月13日
    00
  • MongoDB服务端JavaScript脚本使用方法

    MongoDB是一种基于文档的数据库,可以使用JavaScript编写脚本进行数据的查询、更新、删除等操作。下面是MongoDB服务端JavaScript脚本使用方法的完整攻略。 1. MongoDB服务端JavaScript脚本概述 MongoDB支持在服务端使用JavaScript编写脚本来操作数据。MongoDB内置了一些使用JavaScript编写的…

    database 2023年5月21日
    00
  • redis 队列操作的例子(php)

    Redis是一种高性能的内存数据存储系统,常用于缓存、队列和数据存储等场景。在PHP中使用Redis实现队列操作非常简单。 创建Redis实例 首先需要使用PHP Redis扩展创建一个Redis实例,代码如下: $redis = new \Redis(); // 实例化Redis对象 $redis->connect(‘127.0.0.1’, 6379…

    database 2023年5月22日
    00
  • MySQL datetime类型与时间、日期格式字符串大小比较的方法

    MySQL中的datetime类型和各种时间、日期格式字符串之间可以进行大小比较。本文将介绍如何比较datetime类型和时间、日期格式字符串之间的大小,并提供两个实际应用的示例进行说明。 datetime类型和时间、日期格式字符串的相互转换 MySQL提供了许多将datetime类型和时间、日期格式字符串进行相互转换的函数。这里主要介绍以下三个函数: DA…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部