以下是在IDEA的maven项目中连接并使用MySQL8.0的方法教程的完整攻略:
步骤一:安装并配置MySQL
- 确认已安装MySQL 8.0或以上版本,并启动MySQL服务。
- 使用命令行或可视化工具如Navicat等创建一个数据库,例如“testdb”。
- 创建一个数据库用户,并授予该用户对“testdb”数据库的全部权限。
步骤二:添加Maven依赖
- 按照惯例,将MySQL的驱动程序添加到项目POM文件中。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
- 在IDEA中使用maven命令更新项目,以确保依赖正确导入。
步骤三:编写代码实现连接
使用以下Java代码实现MySQL连接:
import java.sql.*;
public class JdbcTest {
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/testdb";
static final String USER = "username";
static final String PASS = "password";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
System.out.println("连接数据库...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 执行查询
System.out.println("实例化Statement对象...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, name FROM student";
ResultSet rs = stmt.executeQuery(sql);
// 打印结果集
while (rs.next()) {
// 通过字段检索
int id = rs.getInt("id");
String name = rs.getString("name");
// 打印结果
System.out.print("ID: " + id);
System.out.print(", Name: " + name);
System.out.print("\n");
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
// 处理 Class.forName 错误
e.printStackTrace();
} finally {
// 关闭资源
try {
if (stmt != null) stmt.close();
} catch (SQLException se2) {
}// 什么都不做
try {
if (conn != null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
System.out.println("Goodbye!");
}
}
其中,JDBC_DRIVER
和DB_URL
需要根据MySQL版本及连接信息进行修改,USER
和PASS
分别为数据库用户名和密码。代码的主体逻辑是连接到本地的testdb数据库,读取其中的student表并输出结果。
示例说明
- 示例一:插入数据到数据库
若要将数据插入到数据表中,只需按照以下步骤进行:
(1)修改代码,将SQL语句改为插入语句。例如,我们要新增一条id为10,name为“Tom”的数据,修改SQL语句如下:
String sql;
sql = "INSERT INTO student (id, name) VALUES (10, 'Tom')";
stmt.executeUpdate(sql);
(2)重新编译并运行程序。新数据将会被插入到数据库中。
- 示例二:使用预处理语句防范SQL注入攻击
在实际开发过程中,为了避免SQL注入攻击,我们需要使用预处理语句。修改代码如下:
import java.sql.*;
public class JdbcTest3 {
static final String JDBC_DRIVER="com.mysql.cj.jdbc.Driver";
static final String DB_URL="jdbc:mysql://localhost:3306/testdb";
static final String USER="username";
static final String PASS="password";
public static void main(String[] args){
Connection conn=null;
PreparedStatement stmt=null;
try{
Class.forName(JDBC_DRIVER);
conn=DriverManager.getConnection(DB_URL,USER,PASS);
String sql="SELECT id,name FROM student WHERE id=?";
stmt=conn.prepareStatement(sql);
stmt.setInt(1,3);
ResultSet rs=stmt.executeQuery();
while(rs.next()){
int id=rs.getInt("id");
String name=rs.getString("name");
System.out.print("ID: "+id+", Name: "+name);
System.out.print("\n");
}
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
}
}
在预处理语句中,我们使用占位符(即?)代替了实际的参数值,然后使用PreparedStatement
对象的setXXX()
方法为占位符赋值,可以有效防范SQL注入攻击。在此示例中,SQL语句并不复杂,所以可能看不出预处理语句的优势,但在处理复杂的SQL语句时,它将显得尤为重要。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在IDEA的maven项目中连接并使用MySQL8.0的方法教程 - Python技术站