Java使用jdbc连接MySQL数据库实例分析

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技术站

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

相关文章

  • IDEA2022创建Maven Web项目教程(图文)

    让我为您详细讲解“IDEA2022创建Maven Web项目教程(图文)”的完整攻略: 1. 准备工作 在开始创建 Maven Web 项目前,您需要先准备好以下环境与工具: IntelliJ IDEA 2022 JDK 8或以上版本 Maven 3.6.0 或以上版本 2. 创建 Maven Web 项目 启动 IntelliJ IDEA,并选择菜单栏中的…

    Java 2023年5月19日
    00
  • Spring Boot实现数据访问计数器方案详解

    Spring Boot实现数据访问计数器方案详解 在一个Web应用中,我们经常需要统计某些数据的访问次数,用于后续的分析或优化。Spring Boot提供了丰富的支持来实现这个计数器方案。 步骤一:定义计数器服务 首先我们需要定义一个计数器服务,用于记录各种数据的访问次数。这个服务可以定义为一个Spring Bean,并用注解标记为@Service: @Se…

    Java 2023年5月20日
    00
  • 最全Java面试208题,涵盖大厂必考范围

    最全Java面试208题攻略 简介 Java作为一门广泛应用的编程语言,是许多公司招聘的必备技能,也是很多程序员的选择。针对Java面试,现有一份较全的面试题目列表,本攻略将结合这些问题提供完整的解答。 策略 首先,将Java面试题目逐一分析,深入理解问题本质及出题人意图,思考面试官可能会对于这些问题提出哪些追问,以及我们该如何回答。 其次,可通过企业面试官…

    Java 2023年5月24日
    00
  • JavaSpringBoot报错“BeanDefinitionStoreException”的原因和处理方法

    原因 “BeanDefinitionStoreException” 错误通常是以下原因引起的: 配置问题:如果您的配置不正确,则可能会出现此错误。在这种情况下,您需要检查您的配置并确保它们正确。 类型不匹配:如果您的代码中存在类型不匹配问题,则可能会出现此错误。在这种情况下,您需要检查您的代码并确保它们正确。 解决办法 以下是解决 “BeanDefiniti…

    Java 2023年5月4日
    00
  • 如何创建和使用Java类?

    创建和使用Java类可以分为以下几个步骤: 创建一个.java文件,命名为你的类名。例如,我们创建一个名为”Person”的类。 在这个文件中定义这个类的属性和方法。例如,我们为”Person”类定义一个属性”name”和一个方法”sayHello”。 public class Person { private String name; public voi…

    Java 2023年4月27日
    00
  • java多线程之线程安全的单例模式

    Java中的单例模式是指某个类只有一个实例,并提供全局访问点。在多线程的环境下,单例模式需要控制并发访问下的线程安全。下面我们来详细讲解“Java多线程之线程安全的单例模式”的完整攻略。 线程安全的单例模式 线程安全的单例模式可以通过同步方法或同步块来实现。下面是一个使用同步方法实现线程安全单例模式的示例。 public class Singleton { …

    Java 2023年5月18日
    00
  • 详解Java向服务端发送文件的方法

    详解Java向服务端发送文件的方法 在Java编程中,我们经常需要向服务端发送文件,比如我们需要上传用户的头像、简历等等。本文将详细讲解Java向服务端发送文件的方法。 1. 使用Java中的URLConnection发送文件 Java中的URLConnection类可以用来向服务端发送文件。下面是示例代码: import java.io.File; imp…

    Java 2023年5月19日
    00
  • 出现java.lang.NoSuchMethodException异常的解决(靠谱)

    针对这个问题,以下是针对java.lang.NoSuchMethodException异常出现的完整攻略: 1. 异常原因分析 在程序运行过程中,如果出现java.lang.NoSuchMethodException异常,通常是因为程序调用了不存在的方法而导致的。具体分析原因可以按照以下步骤进行: 确认方法是否存在 确认方法的参数类型和顺序是否正确 确认调用…

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