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

yizhihongxing

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日

相关文章

  • 如何自己动手写SQL执行引擎

    如何自己动手写SQL执行引擎 要自己动手写一个SQL执行引擎,需要掌握以下几个步骤: 设计关系型数据库 构建SQL解析器 构建执行计划 执行查询语句 下面逐个步骤进行详细讲解: 设计关系型数据库 在设计关系型数据库时,需要考虑以下几个方面: 数据表设计:每个表需要设计对应的字段、数据类型、主键等信息。 索引设计:需要根据查询需求设计合适的索引,提高查询效率。…

    Java 2023年6月16日
    00
  • Java Apache Commons报错“DateParseException”的原因与解决方法

    当使用Java的Apache Commons类库时,可能会遇到“DateParseException”错误。这个错误通常由以下原因之一起: 日期格式错误:如果日期格式错误,则可能会出现此错误。在这种情况下,需要检查日期格式以解决此问题。 日期解析错误:如果日期解析错误,则可能会出现此错误。在这种情况下,需要检查日期解析以解决此问题。 以下是两个实例: 例1 …

    Java 2023年5月5日
    00
  • 一篇文章带你Java Spring开发入门

    一篇文章带你Java Spring开发入门 介绍 Java Spring是一款流行的开源框架,用于构建Java应用程序。它提供了很多特性,如依赖注入、面向切面编程等等,使得开发Java应用程序变得更加快捷和高效。本文将介绍Java Spring的入门知识,包括环境配置、Maven项目的创建和依赖管理、Spring框架的使用等等。 环境配置 首先,确保你的电脑…

    Java 2023年5月19日
    00
  • SpringBoot整合Spring Data JPA的详细方法

    针对这个话题,下面是SpringBoot整合Spring Data JPA的详细方法的攻略: 1. 添加依赖 在 pom.xml 文件中添加如下依赖: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <arti…

    Java 2023年5月19日
    00
  • Java WebService 简单实例(附实例代码)

    Java WebService 是一种基于 Web 的远程调用技术,允许不同的应用程序通过互联网相互通信以完成特定的业务功能。本文将介绍如何快速入门 Java WebService,并提供一个简单的实例程序。 准备工作 在开始编写 WebService 之前,需要先准备好以下环境和工具: JDK:Java 开发环境 Eclipse:Java 开发工具 Tom…

    Java 2023年5月23日
    00
  • MyBatis实现注册及获取Mapper

    Sure,下面是MyBatis实现注册及获取Mapper的完整攻略: REGISTRATION Resources Configuration 在MyBatis中注册Mapper的第一步是添加资源配置,也就是MyBatis的XML配置文件。MyBatis通过解析这些配置文件来构建SqlSession工厂,进而创建SqlSession实例。我们需要创建以下两个…

    Java 2023年5月19日
    00
  • Java_Spring之Spring5 的新特性

    Java Spring之Spring5 的新特性 简介 Spring是一个著名的开源框架,它旨在简化企业级应用程序的开发。Spring5是Spring框架的最新版本,它引入了许多新的功能和改进,以使应用程序的开发和管理更加容易。本文将介绍一些Spring5的新特性,帮助您更好地了解Spring5的能力。 Spring5的新特性 1. 支持Java8 Spri…

    Java 2023年5月31日
    00
  • 【深入浅出Spring原理及实战】「源码调试分析」深入源码探索Spring底层框架的的refresh方法所出现的问题和异常

    学习Spring源码的建议 阅读Spring官方文档,了解Spring框架的基本概念和使用方法。 下载Spring源码,可以从官网或者GitHub上获取。 阅读Spring源码的入口类,了解Spring框架的启动过程和核心组件的加载顺序。 阅读Spring源码中的注释和文档,了解每个类和方法的作用和用法。 调试Spring源码,可以通过IDEA等工具进行调试…

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