在IDEA的maven项目中连接并使用MySQL8.0的方法教程

yizhihongxing

以下是在IDEA的maven项目中连接并使用MySQL8.0的方法教程的完整攻略:

步骤一:安装并配置MySQL

  1. 确认已安装MySQL 8.0或以上版本,并启动MySQL服务。
  2. 使用命令行或可视化工具如Navicat等创建一个数据库,例如“testdb”。
  3. 创建一个数据库用户,并授予该用户对“testdb”数据库的全部权限。

步骤二:添加Maven依赖

  1. 按照惯例,将MySQL的驱动程序添加到项目POM文件中。
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.13</version>
</dependency>
  1. 在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_DRIVERDB_URL需要根据MySQL版本及连接信息进行修改,USERPASS分别为数据库用户名和密码。代码的主体逻辑是连接到本地的testdb数据库,读取其中的student表并输出结果。

示例说明

  1. 示例一:插入数据到数据库

若要将数据插入到数据表中,只需按照以下步骤进行:

(1)修改代码,将SQL语句改为插入语句。例如,我们要新增一条id为10,name为“Tom”的数据,修改SQL语句如下:

String sql;
sql = "INSERT INTO student (id, name) VALUES (10, 'Tom')";
stmt.executeUpdate(sql);

(2)重新编译并运行程序。新数据将会被插入到数据库中。

  1. 示例二:使用预处理语句防范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技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • JAVA内存模型(JMM)详解

    JAVA内存模型(JMM)详解 什么是JMM JMM 是 Java Memory Model 的缩写,即 Java 内存模型,是一种制定了共享内存系统中多线程访问规则的抽象规范。它规定了 JVM 中各个线程之间的共享变量存储在主内存中,每个线程都有自己的工作内存和虚拟机栈,变量值的更改仅在工作内存中进行,需要同步到主内存中才能被其他线程看到。 JMM 可以保…

    Java 2023年5月26日
    00
  • 线上FullGC问题排查实践——手把手教你排查线上问题

    作者:京东科技 韩国凯 一、问题发现与排查 1.1 找到问题原因 问题起因是我们收到了jdos的容器CPU告警,CPU使用率已经达到104% 观察该机器日志发现,此时有很多线程在执行跑批任务。正常来说,跑批任务是低CPU高内存型,所以此时考虑是FullGC引起的大量CPU占用(之前有类似情况,告知用户后重启应用后解决问题)。 通过泰山查看该机器内存使用情况:…

    Java 2023年5月5日
    00
  • Java集合Stream流操作的基本使用教程分享

    Java集合Stream流操作的基本使用教程分享 什么是Java集合Stream流? Java集合Stream流是Java 8新增的一个处理集合数据的API。集合Stream流本质上是一个“管道”或者“流水线”,它可以通过一系列中间操作对数据进行处理。中间操作不会导致数据计算,只会记录操作,而最终的操作称为终端操作,会触发所有中间操作的计算并返回一个结果。 …

    Java 2023年5月26日
    00
  • JavaEE线程安全实现线程池方法

    JavaEE线程安全实现线程池方法 什么是线程池 线程池是一种可以重复利用线程的技术,它可以避免为每一个任务都创建一个新线程导致的性能开销,并且还可以设置线程数量上限,以防止并发访问资源过多而导致系统资源耗尽的问题。 在Java中,线程池是通过java.util.concurrent包来实现的。 线程池的种类 Java中的线程池主要有以下几种: FixedT…

    Java 2023年5月19日
    00
  • Maven打包上云的实现步骤

    下面我将为你详细讲解”Maven打包上云的实现步骤”的完整攻略。 一、背景介绍 随着云计算和微服务的兴起,很多应用都开始在云上部署和运行。为了方便在云上部署和管理应用,我们往往需要将应用打包成云原生的镜像,并通过容器技术进行部署。在Java应用中,我们可以使用Maven工具来进行应用的打包和构建。 二、Maven打包步骤 Maven是一个开源的项目管理工具,…

    Java 2023年5月19日
    00
  • WIN2003上Apache2+IIS6+Tomcat5之多站点完美配置篇

    接下来我将为你详细讲解“WIN2003上Apache2+IIS6+Tomcat5之多站点完美配置篇”的完整攻略。 什么是Apache,IIS以及Tomcat Apache Apache是一款常用的Web服务器软件,支持多种操作系统和编程语言。它是自由软件,采用了Apache许可证,因此可以免费使用、复制、修改和分发。Apache的优点是简单易用、配置灵活、性…

    Java 2023年5月19日
    00
  • springboot 2.3之后消失的hibernate-validator解决方法

    下面是详细的攻略: 问题背景 在Spring Boot 2.3版本之后,引入了一个新的starter库,名为validation-starter,用于提供Java Bean的数据校验功能。同时,hibernate-validator也被移出了Spring Boot的核心依赖,这导致运行时找不到这个库,会报出ClassNotFoundException的错误。…

    Java 2023年5月20日
    00
  • 什么是Java垃圾回收器?

    Java垃圾回收器是Java虚拟机(JVM)中的一项机制,用于在程序运行过程中动态地回收不再使用的对象所占据的内存空间,以避免内存泄露及程序运行时出现OutOfMemoryError等内存相关错误。 Java垃圾回收器的主要功能是自动回收堆中的垃圾对象,堆是Java程序中被存储对象的区域。Java垃圾回收器的工作过程一般包括标记、清除、压缩和复制等步骤。 其…

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