在Java中使用JDBC连接MySQL数据库,你需要以下步骤:
- 确保你有MySQL JDBC驱动程序。如果没有,你可以添加依赖到你的项目中,例如使用Maven:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
2.在Java代码中,使用DriverManager获取数据库连接。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLJDBCExample {
public static void main(String[] args) {
// 数据库URL,用户名和密码
String url = "jdbc:mysql://localhost:3306/yourDatabase";
String user = "yourUsername";
String password = "yourPassword";
try {
// 加载MySQL驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
Connection conn = DriverManager.getConnection(url, user, password);
// 操作数据库...
// 关闭连接
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
请替换yourDatabase
, yourUsername
, 和 yourPassword
为你的实际数据库信息。
注意:出于安全考虑,最好使用属性文件或环境变量来管理数据库凭据,而不是硬编码在代码中。
使用JDBC操作MySQL数据库中的数据进行增删改查(CRUD:Create, Read, Update, Delete)的基本实现方式如下:
1. 创建连接
首先,你需要加载MySQL JDBC驱动并创建与数据库的连接。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLConnection {
private static final String URL = "jdbc:mysql://localhost:3306/yourDatabase";
private static final String USER = "yourUsername";
private static final String PASSWORD = "yourPassword";
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
2. 查询(Read)
查询通常使用Statement
或PreparedStatement
执行SQL查询语句,并通过ResultSet
获取结果。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ReadExample {
public static void main(String[] args) {
Connection conn = MySQLConnection.getConnection();
if (conn != null) {
try {
String sql = "SELECT * FROM yourTable";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
// 假设表中有id和name两个字段
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
rs.close();
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
3. 插入(Create)
插入操作通常使用PreparedStatement
执行SQL插入语句。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class CreateExample {
public static void main(String[] args) {
Connection conn = MySQLConnection.getConnection();
if (conn != null) {
try {
String sql = "INSERT INTO yourTable (name) VALUES (?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "NewName"); // 设置占位符的值
int rowsInserted = pstmt.executeUpdate();
System.out.println(rowsInserted + " row inserted.");
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
4. 更新(Update)
更新操作也是使用PreparedStatement
执行SQL更新语句。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class UpdateExample {
public static void main(String[] args) {
Connection conn = MySQLConnection.getConnection();
if (conn != null) {
try {
String sql = "UPDATE yourTable SET name = ? WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "UpdatedName"); // 设置第一个占位符的值
pstmt.setInt(2, 1); // 设置第二个占位符的值
int rowsUpdated = pstmt.executeUpdate();
System.out.println(rowsUpdated + " row updated.");
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
5. 删除(Delete)
删除操作也是使用PreparedStatement
执行SQL更新语句。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class UpdateExample {
public static void main(String[] args) {
Connection conn = MySQLConnection.getConnection();
if (conn != null) {
try {
String sql = "delete from yourTable where id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "id值"); // 设置第一个占位符的值
int rowsDeleted = pstmt.executeUpdate();
System.out.println(rowsDeleted + " row deleted successfully.");
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}