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日

相关文章

  • 浅析JAVA中过滤器、监听器、拦截器的区别

    下面开始详细讲解“浅析JAVA中过滤器、监听器、拦截器的区别”的完整攻略。 概述 在Java Web开发中,过滤器、监听器、拦截器都是常用的三种组件,它们的作用都是在服务器接收请求和响应之间加入某种特性。虽然它们的功能有些相似,但它们的实现和应用场景又有所不同。 过滤器(Filter) 过滤器是在请求链中,对请求和响应进行预处理和后处理的组件。过滤器可以拦截…

    Java 2023年5月20日
    00
  • JavaScript自定义分页样式

    下面是关于“JavaScript自定义分页样式”的完整攻略: 分页样式选取 在实现自定义分页样式之前,首先需要确定自己想实现什么样的分页样式。一般来说,分页样式可分为两种,一种是原生样式,即浏览器默认的纯文字链接分页样式;另一种则是自定义分页样式,样式多样,可以把分页效果变得更加美观,可以选择自己喜欢的样式,而且自定义分页样式除了可以实现更好的用户体验外,同…

    Java 2023年6月16日
    00
  • SpringBoot 替换 if 的参数校验示例代码

    下面是关于SpringBoot替换if的参数校验示例代码的完整攻略。 什么是参数校验 参数校验是指对输入参数的正确性进行检查,以保证系统可以正常的运行,常见的校验项包括非空校验、数据格式校验、数据范围校验等。 传统的参数校验方式 传统的参数校验是通过if或者switch等条件语句实现的,例如: public boolean check(String name…

    Java 2023年5月20日
    00
  • c# 制作gif的四种方法

    C# 制作 Gif 的四种方法 1. 使用Gifski库制作Gif Gifski是一个基于 Rust 编写的 Gif 压缩库,可以生成高质量的 Gif 图像。在 C# 中,可以通过调用 Gifski 的 DLL 文件来实现 Gif 图像的制作。 以下是使用 Gifski 制作 Gif 图像的示例: using GifskiLib; // 创建 Gifski …

    Java 2023年5月19日
    00
  • Java SpringBoot高级用法详解

    Java Spring Boot 高级用法详解 简介 Java Spring Boot 是一个基于Spring Framework的开源框架,它可以让我们快速开发Web应用程序。在基本使用之外,Spring Boot还有很多高级用法可以帮助开发人员更加灵活地应对各种复杂情况。 编写自定义starter 自定义starter可以让我们将一些通用代码打包成一个独…

    Java 2023年5月15日
    00
  • Java多线程之多种锁和阻塞队列

    Java多线程之多种锁和阻塞队列 前言 在Java语言中,多线程编程经常涉及到线程的同步和互斥操作,为了实现这些操作,需要使用各种不同的锁和阻塞队列。本文将介绍Java多线程中几种常见的锁和阻塞队列的使用方法,并给出相应的示例说明。 可重入锁(ReentrantLock) 可重入锁是一种可重入的互斥锁,可以使线程在获得锁的情况下,多次调用同步方法而不产生死锁…

    Java 2023年5月18日
    00
  • java 实现文件复制和格式更改的实例

    请允许我详细讲解一下“java 实现文件复制和格式更改的实例”的完整攻略。 准备工作 首先,我们需要明确目标:实现文件夹中文件的复制和格式的更改。需要先将文件夹中的文件集合到一个数组中,并且可根据一定规则(例如文件大小、文件类型等)对数组中的文件进行筛选。 //收集文件到数组 File folder = new File("源目录地址")…

    Java 2023年5月20日
    00
  • myeclipse10配置tomcat教程详解

    MyEclipse 10 配置 Tomcat 教程详解 在 MyEclipse 10 中配置 Tomcat 服务器,可以使得我们在开发 Java Web 项目时更加方便快捷。本文将介绍如何在 MyEclipse 10 中配置 Tomcat 服务器,并提供两个示例说明。 步骤一:下载 Tomcat 首先,请到 Apache 官网下载 Tomcat 服务器,并解…

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