首页 / 美国VPS推荐 / 正文
java连接mysql数据库的代码

Time:2025年01月07日 Read:6 评论:42 作者:y21dr45

## Java连接MySQL数据库代码详解

java连接mysql数据库的代码

### 引言

在现代软件开发中,数据库扮演着至关重要的角色,Java作为一门广泛应用的编程语言,通过JDBC(Java Database Connectivity)提供了与各种数据库交互的标准API,本文将详细介绍如何在Java项目中实现与MySQL数据库的连接并进行数据操作,包括使用JDBC和连接池技术。

### 一、准备工作

#### 1. 安装MySQL数据库

确保你已经安装了MySQL数据库,可以通过[MySQL官网](https://dev.mysql.com/downloads/)下载并安装适合你操作系统的版本。

#### 2. 创建数据库和表

登录到MySQL命令行工具,创建一个名为`testdb`的数据库,并在其中创建一个名为`employees`的表:

```sql

CREATE DATABASE testdb;

USE testdb;

CREATE TABLE employees (

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(50) NOT NULL,

position VARCHAR(50) NOT NULL,

salary DECIMAL(10, 2) NOT NULL

);

```

插入一些测试数据:

```sql

INSERT INTO employees (name, position, salary) VALUES ('Alice', 'Engineer', 7000.00);

INSERT INTO employees (name, position, salary) VALUES ('Bob', 'Manager', 8000.00);

```

#### 3. 添加MySQL Connector/J依赖

如果你使用Maven构建工具,在`pom.xml`文件中添加以下依赖:

```xml

mysqlmysql-connector-java8.0.32

```

如果不使用Maven,可以从MySQL官网下载`mysql-connector-java-8.0.32.jar`并将其添加到项目的类路径中。

### 二、使用JDBC连接MySQL

#### 1. 加载驱动

首先需要加载MySQL的JDBC驱动:

```java

try {

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

} catch (ClassNotFoundException e) {

e.printStackTrace();

```

> 注意:对于MySQL 8及以上版本,建议使用`com.mysql.cj.jdbc.Driver`而不是旧版的`com.mysql.jdbc.Driver`。

#### 2. 建立连接

通过`DriverManager`获取数据库连接:

```java

String url = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8&useSSL=false";

String user = "root";

String password = "password";

Connection connection = null;

try {

connection = DriverManager.getConnection(url, user, password);

System.out.println("数据库连接成功!");

} catch (SQLException e) {

e.printStackTrace();

```

> `useUnicode=true&characterEncoding=utf8&useSSL=false`参数确保了编码和SSL的正确处理。

#### 3. 执行SQL查询

通过`Statement`对象执行SQL查询并处理结果集:

```java

String sql = "SELECT * FROM employees";

try (Statement statement = connection.createStatement();

ResultSet resultSet = statement.executeQuery(sql)) {

while (resultSet.next()) {

int id = resultSet.getInt("id");

String name = resultSet.getString("name");

String position = resultSet.getString("position");

double salary = resultSet.getDouble("salary");

System.out.printf("ID: %d, Name: %s, Position: %s, Salary: %.2f%n", id, name, position, salary);

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

if (connection != null) connection.close();

} catch (SQLException e) {

e.printStackTrace();

}

```

> 这里使用了Java 7引入的try-with-resources语句,确保`ResultSet`和`Statement`在使用完毕后自动关闭。

### 三、使用连接池优化连接管理

#### 1. 引入HikariCP依赖

如果你使用Maven,添加以下依赖:

```xml

com.zaxxerhikaricp4.0.3

```

#### 2. 配置和使用连接池

创建一个名为`DataSourceFactory`的工厂类:

```java

import com.zaxxer.hikari.HikariConfig;

import com.zaxxer.hikari.HikariDataSource;

import javax.sql.DataSource;

public class DataSourceFactory {

private static HikariDataSource dataSource;

static {

HikariConfig config = new HikariConfig();

config.setJdbcUrl("jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8&useSSL=false");

config.setUsername("root");

config.setPassword("password");

config.addDataSourceProperty("cachePrepStmts", "true");

config.addDataSourceProperty("prepStmtCacheSize", "250");

config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

dataSource = new HikariDataSource(config);

}

public static DataSource getDataSource() {

return dataSource;

}

```

#### 3. 使用连接池获取连接

```java

import javax.sql.DataSource;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.Statement;

public class HikariCPExample {

public static void main(String[] args) {

DataSource dataSource = DataSourceFactory.getDataSource();

try (Connection connection = dataSource.getConnection();

Statement statement = connection.createStatement();

ResultSet resultSet = statement.executeQuery("SELECT * FROM employees")) {

while (resultSet.next()) {

int id = resultSet.getInt("id");

String name = resultSet.getString("name");

String position = resultSet.getString("position");

double salary = resultSet.getDouble("salary");

System.out.printf("ID: %d, Name: %s, Position: %s, Salary: %.2f%n", id, name, position, salary);

}

} catch (Exception e) {

e.printStackTrace();

}

}

```

> **优势**:

- **性能提升**:连接池通过复用现有连接,减少了频繁创建和销毁连接的开销。

- **资源管理**:连接池可以有效管理连接的生命周期,防止连接泄漏。

- **高可用性**:在连接池配置中可以设置连接的最小空闲数、最大空闲数等参数,确保系统在高并发下的稳定性。

### 四、使用ORM框架简化数据库操作(以MyBatis为例)

#### 1. 引入MyBatis依赖

如果使用Maven,添加以下依赖:

```xml

org.mybatismybatis3.5.9mybatis-spring2.0.6mysql-connector-java8.0.32

```

#### 2. 配置MyBatis

创建`mybatis-config.xml`配置文件:

```xml

原文链接:https://www.asoulu.com/post/144893.html

排行榜
关于我们
「好主机」服务器测评网专注于为用户提供专业、真实的服务器评测与高性价比推荐。我们通过硬核性能测试、稳定性追踪及用户真实评价,帮助企业和个人用户快速找到最适合的服务器解决方案。无论是云服务器、物理服务器还是企业级服务器,好主机都是您值得信赖的选购指南!
快捷菜单1
服务器测评
VPS测评
VPS测评
服务器资讯
服务器资讯
扫码关注
鲁ICP备2022041413号-1