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语句中。

阅读剩余 71%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java使用jdbc连接MySQL数据库实例分析 - Python技术站

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

相关文章

  • Spring WebClient实战示例

    Spring WebClient 实战示例 Spring WebClient 是 Spring 5 中引入的新特性,它是一种非阻塞式的 HTTP 客户端,可以用于调用 RESTful API 或其他 HTTP 服务。本文将详细讲解 Spring WebClient 的使用方法,并提供两个示例说明。 1. 创建 WebClient 对象 要使用 Spring …

    Java 2023年5月18日
    00
  • MyBatis实现插入大量数据方法详解

    MyBatis实现插入大量数据方法详解 介绍 在实际开发中,可能会遇到需要插入大量数据的情况。如果使用MyBatis默认的SQL语句,会导致多次数据库交互,效率低下。因此,本篇文章将介绍MyBatis如何实现插入大量数据的方法。 使用batch插入 MyBatis提供了批量插入数据的功能,即batch插入。下面是示例代码: <insert id=&qu…

    Java 2023年5月20日
    00
  • Java数据库连接_jdbc-odbc桥连接方式(详解)

    Java数据库连接_jdbc-odbc桥连接方式(详解) 简介 JDBC(Java Database Connectivity)是Java标准化技术之一,其功能是提供Java程序与各种关系型数据库建立连接及操作数据库的通用接口。而JDBC-ODBC桥连接方式是Java连接ODBC(Open Database Connectivity)的一种方式。 ODBC简…

    Java 2023年5月19日
    00
  • Java Apache Commons报错“TimeoutException”的原因与解决方法

    “TimeoutException”是Java的ApacheCommons类库中的一个异常,通常由以下原因之一引起: 网络连接超时:如果网络连接超时,则可能会出现此异常。例如,可能会尝试连接到不可用的主机或端口。 线程等待超时:如果线程等待超时,则可能会出现此异常。例如,可能会等待某个资源的可用性,但超时时间已过。 以下是两个实例: 例1 如果网络连接超时,…

    Java 2023年5月5日
    00
  • 一文带你了解Java中的Object类及类中方法

    一文带你了解Java中的Object类及类中方法 什么是Object类? 在Java中,所有的类都继承自Object类,Object类是Java中所有类的祖先类,其定义了所有类都有的基本方法。 Object类中的常用方法 equals()方法 equals()方法用于判断两个对象是否相等。如果两个对象的内容相同,equals方法返回true,否则返回fals…

    Java 2023年5月26日
    00
  • Java之String类型的编码方式转换

    下面是“Java之String类型的编码方式转换”的完整攻略。 前言 在日常编程中,我们常常需要对字符串的编码方式进行转换。例如:我们从网络获取到的数据一般是以UTF-8编码的字符串,但是在本地的操作系统中,一些字符可能使用的是GBK编码。这个时候,我们就需要进行编码方式的转换,以保证数据的正确性。在Java中,我们可以使用String类的getBytes(…

    Java 2023年5月20日
    00
  • SpringBoot集成Spring security JWT实现接口权限认证

    下面是详细讲解“SpringBoot集成Spring security JWT实现接口权限认证”的完整攻略。 概述 在实际项目中,对于接口权限认证一直是非常重要的问题。在 SpringBoot 中使用 Spring Security 与 JWT(JSON Web Token)完成接口权限认证是一种常见的方式。本文将介绍如何在 SpringBoot 中集成 S…

    Java 2023年5月20日
    00
  • SpringBoot如何返回Json数据格式

    下面我将为你详细讲解SpringBoot如何返回Json数据格式的攻略。 1. 在Controller中返回Json数据 在SpringBoot中,我们可以使用@RestController和@ResponseBody注解来返回Json数据。 @RestController注解是@Controller和@ResponseBody的组合注解。 @Respons…

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