如何使用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日

相关文章

  • Java Apache Commons报错“MalformedPatternException”的原因与解决方法

    “MalformedPatternException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 无效的正则表达式:如果正则表达式无效,则可能会出现此错误。在这种情况下,需要检查正则表达式以解决此问题。 无效的模式:如果模式无效,则可能会出现此错误。在这种情况下,需要检查模式以解决此问题。 以下是两个实例: 例1 如果…

    Java 2023年5月5日
    00
  • Hibernate中获取Session的两种方式代码示例

    获取 Hibernate 中的 Session 可以通过两种方式:getCurrentSession() 和 openSession()。 getCurrentSession() 方法 getCurrentSession() 方法获取的 Session 是与当前线程绑定的,使用完后会自动关闭。 示例代码如下: Session session = sessio…

    Java 2023年5月31日
    00
  • Springboot如何使用Aspectj实现AOP面向切面编程

    下面我将为你详细讲解如何使用Aspectj实现AOP面向切面编程。 什么是AOP? AOP,全称为Aspect Oriented Programming,即面向切面编程。它是一种编程思想,与OOP(面向对象编程)相对。AOP的主要优势在于能够将系统中的横切关注点(例如日志输出、权限校验、事务管理等)与核心业务逻辑分离。从而方便开发复用性更强的组件。Aspec…

    Java 2023年5月19日
    00
  • java框架基础之SPI机制实现及源码解析

    Java框架基础之SPI机制实现及源码解析 什么是SPI机制 SPI(Service Provider Interface)是Java提供的一套面向接口的类加载机制。简单来说,我们可以通过SPI机制来动态替换掉接口的默认实现。 在Java中,我们通常提供一个接口,并给出一个接口的默认实现。而在SPI中,我们则可以提供一个接口,以及多个不同实现该接口的类。在程…

    Java 2023年5月26日
    00
  • Spring和SpringMVC扫描注解类冲突的解决方案

    在Spring和SpringMVC中,都有扫描注解类的功能。但是,如果在两个框架中同时使用了相同的注解类,就会出现冲突。本文将详细讲解Spring和SpringMVC扫描注解类冲突的解决方案,并提供两个示例说明。 解决方案一:使用不同的包名 我们可以在Spring和SpringMVC中使用不同的包名,来避免扫描相同的注解类。下面是一个示例: // Sprin…

    Java 2023年5月18日
    00
  • java从字符串中提取数字的简单实例

    关于“java从字符串中提取数字的简单实例”,以下是完整攻略: 1. 前言 在开发Java应用程序时,经常需要从字符串中提取数字,这种情况很常见。本文将介绍使用Java代码如何从字符串中提取数字。 2. 通过正则表达式实现 使用正则表达式可以很方便地从字符串中提取数字。代码示例1如下: import java.util.regex.Matcher; impo…

    Java 2023年5月26日
    00
  • JavaWeb读取配置文件的四种方法

    关于JavaWeb读取配置文件的四种方法,我将会按照以下四种方法作详细介绍: 使用ClassLoader的getResourceAsStream方法读取 使用Properties类读取 使用ServletContext的getRealPath方法读取 使用Spring框架的PropertiesLoaderUtils方法读取 1. 使用ClassLoader的…

    Java 2023年5月19日
    00
  • SpringBoot Mail邮件任务详情

    Spring Boot Mail邮件任务详情 在Spring Boot中,我们可以使用Mail模块来实现邮件发送功能。本文将详细讲解Spring Boot Mail邮件任务的完整攻略,并提供两个示例。 1. 配置邮件发送信息 以下是配置邮件发送信息的基本流程: 在application.properties或application.yml文件中添加以下内容:…

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