如何使用JDBC连接数据库并执行SQL语句

下面是如何使用JDBC连接数据库并执行SQL语句的完整攻略:

一、引入JDBC驱动

Java程序中使用JDBC(Java DataBase Connectivity)需要先引入JDBC驱动。不同的数据库所对应的驱动不同,这里以MySQL为例:

<!-- 在项目的pom文件中添加MySQL驱动的依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>

二、建立数据库连接

在Java中使用JDBC连接数据库的过程可以分为以下几个步骤:

  1. 加载JDBC驱动(Driver)类,这里以MySQL为例:
Class.forName("com.mysql.cj.jdbc.Driver");
  1. 创建一个数据库连接,需要提供连接URL(包含数据库名称)、用户名、密码:
Connection conn = 
    DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name", "username", "password");

三、执行SQL语句

连接建立好了之后,就可以执行SQL语句了。JDBC中提供了Statement和PreparedStatement两种方式执行SQL语句。

1. Statement

使用Statement执行SQL语句可以直接执行SQL。示例代码如下:

Statement stmt = conn.createStatement();

// 执行SQL语句,返回受影响的行数
int affectedRows = stmt.executeUpdate("INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3)");

2. PreparedStatement

使用PreparedStatement可以让我们在执行SQL语句的时候方便地传入参数。示例代码如下:

// PreparedStatement的创建方式和Statement不同,需要提供一个含有参数占位符的SQL语句
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM table_name WHERE column1 = ?");

// 设置参数值
pstmt.setString(1, "value1");

// 执行SQL语句,返回查询结果集对象
ResultSet rs = pstmt.executeQuery();

四、关闭连接

关闭资源是非常重要的一步。

Connection、Statement和PreparedStatement都实现了AutoCloseable接口,可以使用try-with-resources代码块自动关闭资源。示例代码如下:

try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name", "username", "password");
     Statement stmt = conn.createStatement()) {
     // 执行SQL语句
} catch (SQLException e) {
    e.printStackTrace();
}

以上就是使用JDBC连接数据库并执行SQL语句的完整攻略,通过以上的方法你可以在Java程序中方便快捷地连接数据库,并完成各种操作。

下面是两个示例:

示例一:使用Statement执行一条插入数据的SQL语句

public void insertData(String name, int age, String sex) {
    try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name", "username", "password");
         Statement stmt = conn.createStatement()) {
        String sql = "INSERT INTO user (name, age, sex) VALUES('" + name + "', " + age + ", '" + sex + "')";
        int affectedRows = stmt.executeUpdate(sql);
        System.out.println("插入成功,受影响的行数为:" + affectedRows);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

示例二:使用PreparedStatement执行一条查询的SQL语句

public List<User> queryData(String name) {
    List<User> userList = new ArrayList<>();
    try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name", "username", "password");
         PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM user WHERE name = ?")) {
        pstmt.setString(1, name);
        ResultSet rs = pstmt.executeQuery();
        while (rs.next()) {
            User user = new User();
            user.setId(rs.getInt("id"));
            user.setName(rs.getString("name"));
            user.setAge(rs.getInt("age"));
            user.setSex(rs.getString("sex"));
            userList.add(user);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return userList;
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用JDBC连接数据库并执行SQL语句 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Spring Boot启动流程分析

    我来为您讲解关于“SpringBoot启动流程分析”的完整攻略。 SpringBoot启动流程分析 SpringBoot是基于Spring的一个快速开发新一代Java框架,其简化了Spring应用的开发流程,同时也隐藏了Spring框架配置的复杂性,在不需要过多配置的情况下,实现快速搭建Spring应用。 SpringBoot应用的启动过程可以分为以下几个步…

    Java 2023年5月15日
    00
  • Unicode、UTF-8 和 ISO8859-1区别解析

    让我来讲解一下”Unicode、UTF-8 和 ISO8859-1区别解析”。 什么是 Unicode Unicode是一种由国际组织维护的全球字符集标准。它的目标是支持世界上所有字符集,并成为一种数字化的字符编码方案。 Unicode字符集包括ASCII码字符集,而且还包括通用秒(第0平面)字符,这是其他字符集都没有的。通用多文本字符集,包括汉字字符集(第…

    Java 2023年5月20日
    00
  • 使用java从乱码文本中解析出正确的文本

    当我们从某些旧的应用程序,旧的数据库或旧的操作系统中获取文本数据时,会遇到乱码问题,这些文本数据看起来像是一些无意义的字符混合而成的一串。 使用Java从乱码文本中解析出正确的文本,需要以下几个步骤: 1.了解乱码的产生原因 乱码的产生原因一般有以下几个: 使用不同编码方式进行编码和解码; 编码方式被错误识别; 文件本身损坏或被篡改。 在解决乱码问题时,需要…

    Java 2023年5月20日
    00
  • maven assembly打包生成Java应用启动脚本bat和sh的方法

    Maven是一个流行的Java项目管理和构建工具,它可以自动处理依赖关系和构建过程。 Maven Assembly插件提供了将Java应用程序打包成一个可执行的JAR文件并创建用于启动应用程序的脚本的功能。本教程将介绍如何使用Maven Assembly插件打包Java应用程序并生成启动脚本。 安装Maven 首先,您需要安装Maven。您可以从Maven官…

    Java 2023年6月2日
    00
  • Maven下载和配置环境教程

    Maven下载和配置环境教程 Maven是一款十分流行的项目管理和构建工具,通过引入依赖的方式将项目工程带入到一个统一管理的框架之中。下面是Maven下载和配置环境的攻略。 下载Maven Maven的官方网站为:http://maven.apache.org/,打开网页后可以选择下载最新版的Maven,也可以选择下载历史版本。可以根据自己的需要进行下载。下…

    Java 2023年5月20日
    00
  • Java针对封装数组的简单复杂度分析方法

    当我们使用Java数组实现数据结构时,需要对数组的封装进行复杂度分析。下面是Java针对封装数组的简单复杂度分析方法的完整攻略: 1. 封装数组的简单介绍 Java数组是一种用于存储相同类型元素的容器,可以被用来实现一个简单队列或栈,也可以被用于排序算法中。然而,在实际应用中,直接使用数组可能会引起一些问题,如:数组的大小是固定的,在插入和删除操作时需要移动…

    Java 2023年5月26日
    00
  • Flink入门级应用域名处理示例

    下面我将详细讲解如何使用Flink来编写一个入门级的域名处理示例。 1. 编写代码 首先,我们需要编写一个Java程序来实现域名处理的示例。代码如下: import org.apache.flink.api.common.functions.FlatMapFunction; import org.apache.flink.api.java.tuple.Tup…

    Java 2023年5月20日
    00
  • org.apache.ibatis.binding.BindingException异常报错原因以及详细解决方案

    先给一下org.apache.ibatis.binding.BindingException异常的概述: BindingException是MyBatis中的绑定异常,当Mapper接口和Mapper映射文件出现错误时抛出。在MyBatis中,Mapper接口和Mapper映射文件是对应绑定的,如果Mapper接口方法的参数、返回值类型或SQL语句等配置错误…

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