Java使用JDBC连接MySQL数据库实例分析
JDBC(Java Database Connectivity)是Java数据库开发的基石,通过JDBC,Java开发者可以通过简单易用的API连接各种关系型数据库,MySQL当然是其中之一。本文将介绍如何使用JDBC连接MySQL数据库。
步骤一:下载并安装MySQL数据库
在官网上下载MySQL Community Server并进行安装。
步骤二:添加MySQL JDBC驱动
将下载的MySQL JDBC驱动包(mysql-connector-java-{version}-bin.jar)放入到Java项目的classpath中。
步骤三:编写Java代码
下面是一个使用JDBC连接MySQL数据库的示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcDemo {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//注册JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
//打开连接
String url = "jdbc:mysql://127.0.0.1:3306/testdb";
String user = "root";
String password = "root";
conn = DriverManager.getConnection(url, user, password);
//执行查询
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM users");
//处理结果集
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t"
+ rs.getString("name") + "\t"
+ rs.getString("email"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭资源
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
第1步: 通过调用Class.forName()方法加载JDBC驱动。
第2步: 打开和数据库的连接。
第3步: 执行SQL查询,获取结果集。
第4步: 处理结果集。
第5步: 关闭连接、Statement和ResultSet等资源。
示例一:创建一个MySQL数据库实例
在MySQL shell中创建一个名为testdb的数据库。
mysql> CREATE DATABASE testdb;
在testdb中创建一个名为users的表。
mysql> USE testdb;
mysql> CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
往users表中插入一些数据。
mysql> INSERT INTO users VALUES (1, '张三', 'zhangsan@qq.com');
mysql> INSERT INTO users VALUES (2, '李四', 'lisi@qq.com');
运行Java程序(示例代码中的JdbcDemo类),执行SQL查询,获取结果集。
$ java JdbcDemo
1 张三 zhangsan@qq.com
2 李四 lisi@qq.com
示例二:使用PreparedStatement防止SQL注入
“SQL注入”是一种常见的攻击方式,通过在用户输入的数据中注入SQL语句来实现对数据库的非法访问。为了避免这种攻击,我们可以使用PreparedStatement代替Statement。
下面是一个使用PreparedStatement防止SQL注入的示例代码。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class JdbcDemo {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//注册JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
//打开连接
String url = "jdbc:mysql://127.0.0.1:3306/testdb";
String user = "root";
String password = "root";
conn = DriverManager.getConnection(url, user, password);
//使用PreparedStatement执行参数化查询
String sql = "SELECT * FROM users WHERE name=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "张三");
rs = pstmt.executeQuery();
//处理结果集
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t"
+ rs.getString("name") + "\t"
+ rs.getString("email"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭资源
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
使用PreparedStatement时,我们可以通过占位符(?)来动态设置查询条件的值。在执行查询之前,使用setString()方法设置占位符的值。这样就可以防止用户输入的数据注入到SQL语句中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java使用jdbc连接MySQL数据库实例分析 - Python技术站