JDBC 连接MySQL实例详解

yizhihongxing

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日

相关文章

  • Linux下Redis设置密码及开机自启动

    下面给出详细的“Linux下Redis设置密码及开机自启动”的攻略。 1. 设置密码 1.1 准备工作 首先,在你的Linux系统上安装好了Redis,并已经正常启动。如果还未安装,可以通过以下命令进行安装: sudo apt-get update sudo apt-get install redis-server 为了方便,我们假设Redis安装在默认目录…

    database 2023年5月22日
    00
  • Cassandra 和 IBM Db2 的区别

    Cassandra和IBM Db2是两种不同类型的数据库管理系统,各自有着不同的优点和适用场景。 Cassandra vs. IBM Db2: 概述 Cassandra是一个开源的分布式NoSQL数据库,适用于海量数据的存储和处理,具有高可扩展性和高可靠性。它支持面向列的数据模型,可以提供快速的读写速度,并且可以在多个数据中心之间进行数据同步,以保证高可用性…

    database 2023年3月27日
    00
  • mysql 备份与迁移 数据同步方法

    当需要迁移或备份mysql中的数据时,需要使用数据同步方法,以下是mysql备份与迁移数据同步方法的完整攻略: 1. 备份数据 1.1 使用mysqldump 在mysql服务器上运行以下命令: mysqldump -u USERNAME -p DATABASE_NAME > BACKUP.sql 其中,USERNAME是你的mysql用户名,DATA…

    database 2023年5月22日
    00
  • Python文件读写常见用法总结

    下面是 “Python文件读写常见用法总结” 的完整攻略。 1. 文件读写模式 在进行文件读写操作前,需要先指定打开文件的模式。常见的模式有: r:以只读模式打开文件,文件指针位于文件开头。 w:以写入模式打开文件,如果文件不存在则创建一个新文件,如果文件已存在则清空原内容。 a:以追加模式打开文件,如果文件不存在则创建一个新文件,如果文件已存在则文件指针移…

    database 2023年5月22日
    00
  • java.sql.SQLException: 内部错误: Unable to construct a Datum from the specified input

    让我详细讲解一下“java.sql.SQLException: 内部错误: Unable to construct a Datum from the specified input”的解决方法: 1. 问题背景 在使用Java进行数据库连接和查询时,可能会遇到以下错误提示: java.sql.SQLException: 内部错误: Unable to con…

    database 2023年5月21日
    00
  • 揭秘SQL Server 2014有哪些新特性(1)-内存数据库

    揭秘SQL Server 2014有哪些新特性(1)-内存数据库 介绍SQL Server 2014引入了内存优化表,为高性能事务处理提供快速、可靠的解决方案。内存优化表可最大程度地减少锁定和堵塞,加快事务处理速度。本文将详细介绍内存优化表的设计、使用案例及细节注意事项。 内存优化表的设计内存优化表是将一段或多段内存作为容器,在内存上存储临时表。这些表不存储…

    database 2023年5月19日
    00
  • MySQL UPDATE:修改数据(更新数据)详解

    MySQL UPDATE语句用于更新表中的现有数据。它允许您修改现有行,而不是添加新行。 语法: UPDATE table_name SET column1 = value1, column2 = value2, … WHERE condition; 参数说明: table_name:要更新数据的表名。 SET:指定要更改的列和它们新值的列表。 WHER…

    MySQL 2023年3月9日
    00
  • Centos7下安装和配置MySQL5.7.20的详细教程

    下面是详细的“Centos7下安装和配置MySQL5.7.20的详细教程”。 1. 安装MySQL 1.1 下载MySQL软件包 从MySQL官方网站下载MySQL 5.7.20的版本压缩包,下载地址为 https://dev.mysql.com/downloads/mysql/5.7.html 。 建议下载“Generic Linux (Architect…

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