• Java-数据库操作


    一、前言


    本文主要讲述的是如何使用JDBC技术连接本地的数据库,编写Java语言代码来对本地的MySQL数据库进行基础的增删改查操作,所以阅读本文章之前还得对数据库的操作有基本的了解,望周知。



    二、JDBC技术

    JDBC(Java Database Connectivity)是Java中用于连接和执行SQL语句来与数据库进行交互的一种技术。 JDBC API包含了多种接口和类,允许Java程序与数据库进行通信。

    使用JDBC技术连接MySQL数据库的步骤:

    1、导入JDBC包

    你需要将MySQL的JDBC驱动包含在你的项目中。一般来说,这可以通过将相关的jar文件添加到项目的类路径中来完成。这个jar文件通常被称为mysql-connector-java-version-bin.jar,其中“version”是你的JDBC驱动的版本号。

    在你的Java代码中,你需要在文件的顶部导入相关的包。这些包包括java.sql包和MySQL的JDBC驱动包。

    import java.sql.*;  
    import com.mysql.jdbc.*;
    
    • 1
    • 2

    2、建立连接
    接下来,你需要创建一个连接到你的MySQL数据库的连接对象。这需要你的数据库的URL,用户名和密码。下面是一个例子:

    String url = "jdbc:mysql://localhost:3306/mydatabase";  
    String user = "root";  
    String password = "mypassword";  
    Connection conn = DriverManager.getConnection(url, user, password);
    
    • 1
    • 2
    • 3
    • 4

    在上面的例子中,“localhost:3306”是你的MySQL服务器的地址和端口(通常为3306),“mydatabase”是你的数据库名,“root”和“mypassword”是你的用户名和密码。


    3、创建语句和执行查询

    一但设置了连接对象,你就可以创建一个Statement对象,然后使用它来执行SQL查询。
    例如:

    Statement stmt = conn.createStatement();  
    ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");
    
    • 1
    • 2

    在上面这个例子中,“mytable”是你的表名。执行查询后,你将得到一个ResultSet对象,你可以使用它来获取查询的结果。


    4、处理结果和清理资源

    在执行查询后,你需要处理查询的结果,并且清理你的资源。下面是一个例子:

    while(rs.next()) {  
        String column1 = rs.getString("column1");  
        int column2 = rs.getInt("column2");  
        //...处理结果...  
    }  
    rs.close(); // 关闭ResultSet  
    stmt.close(); // 关闭Statement  
    conn.close(); // 关闭Connection
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这个例子中,你需要替换"column1"和"column2"等为你的列的名字。在处理完结果后,你需要关闭ResultSet、Statement和Connection对象。这可以确保你的资源被正确地清理,防止内存泄漏和其他问题。



    三、JDBC中常用的类和接口

    1. DriverManager类:用于加载和管理JDBC驱动程序。DriverManager类提供了一个静态方法getConnection(),它返回一个Connection对象,该对象表示与数据库的连接。
    2. Connection接口:代表与数据库的连接。Connection接口提供了一些方法来创建Statement、PreparedStatement和CallableStatement等对象,用于执行SQL语句和存储过程等。
    3. Statement接口:用于执行静态SQL语句并返回ResultSet对象。可以使用Statement接口的executeQuery()方法执行查询,返回ResultSet对象表示查询结果集;使用executeUpdate()方法执行更新操作,返回一个int值表示受影响的行数。
    4. PreparedStatement接口:用于执行动态SQL语句。PreparedStatement接口继承了Statement接口,并提供了额外的setXXX()方法来设置SQL语句中的参数。使用PreparedStatement接口可以提高性能和安全性。
    5. ResultSet接口:用于获取查询结果集中的数据。ResultSet接口提供了一些方法来获取列值、列名等。
    6. CallableStatement接口:用于调用存储过程。CallableStatement接口继承了PreparedStatement接口,并提供了一些方法来设置存储过程的参数和获取返回值。
    7. Driver接口:JDBC驱动程序必须实现的接口。Driver接口定义了一些标准方法,如connect()、getMajorVersion()和getMinorVersion()等,用于与DriverManager进行通信。
    8. SQLException异常类:在JDBC操作中可能会抛出SQLException异常类,表示发生了某种数据库访问错误。


    四、数据库操作


    1.连接数据库

    String driver="com.mysql.cj.jdbc.Driver";   // 驱动类Driver在jar包中位置
    String url="jdbc:mysql://localhost:3306/需要连接的数据库名";
    /*
    * 它的值是"jdbc:mysql://localhost:3306/javasql",
    这通常是一个连接到MySQL数据库的JDBC(Java Database Connectivity)URL。
    这个URL指定了如何连接到位于本地主机(localhost)的MySQL数据库服务器(端口号为3306),
    以及要连接到的数据库名称为'javasql'。
    * */
    
    String user="数据库用户名"; // 用户名
    String password="数据库密码"; // 登录密码
    
    try {
        Class.forName(driver);  // 加载连接对象
        Connection conn = DriverManager.getConnection(url, user, password);	
    } catch (ClassNotFoundException e) {
        // 加载失败
        throw new RuntimeException(e);
    } catch (SQLException e) {
        // 连接失败
        throw new RuntimeException(e);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22


    查询操作

    下面这个例子中代码会连接到一个名为"testDB"的MySQL数据库,并从"Users"表中查询所有的记录。查询的结果会显示每条记录的"name"和"email"字段。

    import java.sql.*;  
      
    public class Main {  
        public static void main(String[] args) {  
            // 创建连接  
            String url = "jdbc:mysql://localhost:3306/testDB";  
            String username = "root";  
            String password = "password";  
            Connection conn = null;  
            Statement stmt = null;  
            try {  
                conn = DriverManager.getConnection(url, username, password);  
                stmt = conn.createStatement();  
                // 执行查询  
                String sql = "SELECT * FROM Users";  // Users是表的名称  
                ResultSet rs = stmt.executeQuery(sql);  
                while(rs.next()) {  
                    // 通过列名获取相应的值  
                    String name = rs.getString("name");  
                    String email = rs.getString("email");  
                    System.out.println("Name: " + name + ", Email: " + email);  
                }  
                rs.close();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            } finally {  
                try {  
                    if(stmt != null) stmt.close();  
                    if(conn != null) conn.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35


    增、删、改操作

    对于插入、更新和删除操作(增删改操作),我们首先需要创建一个PreparedStatement对象,然后设置SQL语句中的参数,并使用executeUpdate()方法执行这个语句。且增删改操作的不同点在于使用不同的SQL语句来创建PreparedStatement对象,其余并无差距,这里就只举例新增操作。

    import java.sql.*;  
      
    public class Main {  
        public static void main(String[] args) {  
            // ...(省略连接部分的代码)  
            try {  
                // 创建一个PreparedStatement对象  
                PreparedStatement pstmt = conn.prepareStatement("INSERT INTO Users (name, email) VALUES (?, ?)");  
                // 设置参数  
                pstmt.setString(1, "New User");  
                pstmt.setString(2, "newuser@email.com");  
                // 执行更新操作  
                pstmt.executeUpdate();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            }  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    上面代码将创建一个新的用户记录。
    注意,"?"符号在SQL语句中代表一个通配符,我们在set()方法中为这些参数设置值,通配符顺序从1开始计算,且代表不同参数的通配符需要使用不同的set方法来设置值。
    执行executeUpdate()方法会将这条SQL语句发送到数据库,创建一个新的用户记录。



    END

  • 相关阅读:
    液压比例阀放大器比例控制器比例阀放大板
    【echarts 】设置datazoom 允许使用鼠标滚轮滚动图表
    [附源码]Python计算机毕业设计Django万佳商城管理系统
    hadoop3.3.1单机版环境搭建详细流程记录
    LeetCode刷题笔记之图论
    substring-after用法
    盘点MySQL的八大日志,你知道哪些?
    Ubuntu16.04apt更新失败
    iBooker 技术评论 20230902
    HttpRunnerManager安装(三)-Linux下配置myql数据库&初始化数据
  • 原文地址:https://blog.csdn.net/Lion__king/article/details/133830022