Java原生操作JDBC连接以及原理详解

Java原生操作JDBC连接以及原理详解

JDBC(Java Database Connectivity,java数据连接)是java语言访问数据库的标准规范,使用JDBC可以方便地连接数据库、执行SQL语句、获取结果等。本文将介绍如何在Java中原生操作JDBC连接,并对JDBC连接的一些原理进行详细解释。

JDBC的工作原理

JDBC的工作原理主要是:使用JDBC驱动连接数据库,JDBC驱动会根据连接字符串连接数据库,并返回一个Connection对象,通过Connection对象可以对数据库进行操作,包括执行SQL语句、获取PreparedStatement、Statement、CallableStatement对象等。

JDBC驱动在连接数据库时会根据连接字符串中指定的数据库的类型和版本选择相应的操作方式,不同的数据库可能会需要不同的JDBC驱动。例如,连接MySQL需要使用MySQL Connector/J,而连接Oracle需要使用Oracle JDBC驱动程序等。

JDBC连接的操作步骤

下面将介绍使用JDBC连接数据库的操作步骤:

  1. 加载JDBC驱动程序

在使用JDBC API之前,需要先加载相应的JDBC驱动程序,可以通过Class.forName()或者DriverManager.registerDriver()方法来加载JDBC驱动程序。

    Class.forName("com.mysql.cj.jdbc.Driver");
  1. 建立数据库连接

连接数据库的方法是DriverManager.getConnection(),可以通过传入连接字符串、数据库用户名、密码来连接数据库。getConnection()方法返回一个Connection对象,表示连接到的数据库实例。

    String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
    String user = "root";
    String password = "root";
    Connection conn = DriverManager.getConnection(url, user, password);
  1. 创建Statement对象

创建Statement对象,用于执行SQL语句。Statement对象有三种类型:Statement(用于执行一般的SQL语句)、PreparedStatement(用于执行带参数的SQL语句)、CallableStatement(用于执行存储过程)。

    Statement stmt = conn.createStatement();
  1. 执行SQL语句

通过Statement对象的execute()、executeUpdate()、executeQuery()方法来执行SQL语句,这里分别对应执行任意SQL语句、执行INSERT、UPDATE、DELETE等SQL语句、执行SELECT语句的操作。

    // 执行INSERT语句
    String sql = "INSERT INTO user(id, name, age) VALUES(1, '张三', 18)";
    int rows = stmt.executeUpdate(sql);

    // 执行SELECT语句
    String sql = "SELECT * FROM user";
    ResultSet rs = stmt.executeQuery(sql);
  1. 关闭数据库连接

最后,使用Connection对象的close()方法关闭数据库连接,释放相关资源。

    conn.close();

示例1:使用JDBC连接MySQL数据库

下面是一个使用JDBC连接MySQL数据库的示例,首先在pom.xml文件中添加MySQL Connector/J的依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>

然后使用如下代码来执行SQL语句:

import java.sql.*;

public class App {

    public static void main(String[] args) throws Exception {
        // 加载JDBC驱动程序
        Class.forName("com.mysql.cj.jdbc.Driver");

        // 建立数据库连接
        String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
        String user = "root";
        String password = "root";
        Connection conn = DriverManager.getConnection(url, user, password);

        // 创建Statement对象
        Statement stmt = conn.createStatement();

        // 执行INSERT语句
        String sql = "INSERT INTO user(id, name, age) VALUES(1, '张三', 18)";
        int rows = stmt.executeUpdate(sql);
        System.out.printf("INSERT影响了%d行数据\n", rows);

        // 执行SELECT语句
        sql = "SELECT * FROM user";
        ResultSet rs = stmt.executeQuery(sql);
        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            System.out.printf("id=%d, name=%s, age=%d\n", id, name, age);
        }

        // 关闭数据库连接
        conn.close();
    }
}

示例2:使用JDBC连接SQLite数据库

下面是一个使用JDBC连接SQLite数据库的示例,首先需要在pom.xml文件中添加SQLite JDBC的依赖:

<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.36.0.3</version>
</dependency>

然后使用如下代码来连接SQLite数据库:

import java.sql.*;

public class App {

    public static void main(String[] args) throws Exception {
        // 加载JDBC驱动程序
        Class.forName("org.sqlite.JDBC");

        // 建立数据库连接
        String dbfile = "test.db";
        Connection conn = DriverManager.getConnection("jdbc:sqlite:" + dbfile);

        // 创建Statement对象
        Statement stmt = conn.createStatement();

        // 执行CREATE TABLE语句
        String sql = "CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";
        int rows = stmt.executeUpdate(sql);
        System.out.printf("CREATE TABLE影响了%d行数据\n", rows);

        // 执行INSERT语句
        sql = "INSERT INTO user(id, name, age) VALUES(1, '张三', 18)";
        rows = stmt.executeUpdate(sql);
        System.out.printf("INSERT影响了%d行数据\n", rows);

        // 执行SELECT语句
        sql = "SELECT * FROM user";
        ResultSet rs = stmt.executeQuery(sql);
        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            System.out.printf("id=%d, name=%s, age=%d\n", id, name, age);
        }

        // 关闭数据库连接
        conn.close();
    }
}

这里使用的是SQLite数据库,连接字符串的格式是"jdbc:sqlite:数据库文件路径"。需要注意的是,如果数据库文件不存在,会自动创建一个新的数据库文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java原生操作JDBC连接以及原理详解 - Python技术站

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

相关文章

  • Java两整数相除向上取整的方式详解(Math.ceil())

    Java中两个整数相除可能不是整数,因此需要进行取整。向上取整就是将小数部分向上一位取整到最近的整数。 Math类提供了向上取整方法 ceil()。 方法定义 public static double ceil(double a) 参数 a:需要向上取整的数。 返回值 返回double类型,表示a向上取整的结果。 示例说明 示例1 接下来我们看一个例子:计算…

    Java 2023年5月26日
    00
  • JAVA实现空间索引编码——GeoHash的示例

    想要详细讲解“JAVA实现空间索引编码——GeoHash的示例”的完整攻略,可以按照以下步骤进行: 1. 了解GeoHash GeoHash是一种基于经纬度坐标存储和索引的编码方式,将二维的经纬度坐标转换为字符串形式进行存储,以达到快速空间索引的目的。在GeoHash编码中,每个字符对应的是一段矩形区域,在进行空间查询的时候,只需要将查询范围转化为对应的Ge…

    Java 2023年5月20日
    00
  • 浅谈Mybatis获取参数值的方式

    下面是详细的“浅谈Mybatis获取参数值的方式”的攻略。 前言 在Mybatis中获取参数值是常见的操作。本文将向你介绍Mybatis中获取参数值的方式,帮助你更好的使用Mybatis。 直接获取参数名 可以直接在Mapper方法的参数中来获取实际传入参数的名称和值。 代码示例 public interface UserMapper{ void inser…

    Java 2023年5月20日
    00
  • springboot整合持久层的方法实现

    Spring Boot是一个非常流行的Java Web框架,它提供了很多方便的功能来简化应用程序的开发。其中,整合持久层是Spring Boot应用程序中的一个重要部分。以下是Spring Boot整合持久层的方法实现的详细攻略: 选择持久层框架 在Spring Boot中,我们可以选择使用多种持久层框架,如Hibernate、MyBatis、Spring …

    Java 2023年5月15日
    00
  • 深入了解Spring中的FactoryBean

    深入了解Spring中的FactoryBean 在Spring中,有一个FactoryBean接口,它的作用是创建和管理一个对象的实例。与普通的bean定义不同,FactoryBean的bean定义被Spring视为一个创建bean实例的工厂。本文将深入介绍Spring中FactoryBean的使用方法和示例。 FactoryBean接口 Spring的Fa…

    Java 2023年5月19日
    00
  • java常见的字符串操作和日期操作汇总

    Java常见的字符串操作 字符串的基本操作 Java String是不可变对象,是对比较字符串最常用最简便的类,常见的字符串操作有: 字符串拼接: 使用+操作符进行字符串拼接,例如 “Hello” + “World”,结果为 “Hello World”。 使用concat()方法进行字符串拼接,例如 “Hello”.concat(” “).concat(“W…

    Java 2023年5月20日
    00
  • JVM类加载机制原理及用法解析

    JVM类加载机制原理及用法解析 Java虚拟机是Java语言实现”Write Once, Run Anywhere”程序设计理念的一个关键组成部分,而Java虚拟机中最重要的一个子系统就是类加载子系统。该子系统负责对字节码文件(.class文件)中的类进行加载、验证、准备、解析、初始化等操作,从而在程序的运行中实现类的动态加载和管理。那么,下面我们就来详细讲…

    Java 2023年6月15日
    00
  • js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)

    当用户需要上传图片时,常见的方式是通过点击上传按钮或将图片拖拽到上传区域进行上传。但是,这个过程可能会比较繁琐,用户需要先将图片从电脑上选择出来或者用截图工具进行截图,然后才能进行上传操作。 为了提高用户的上传体验,我们可以通过JS实现Ctrl+V粘贴上传图片的功能。具体实现过程如下: 获取粘贴板上的图片数据 首先,需要监听网页上的粘贴事件,在用户按下Ctr…

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