IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 9:JDBC-Java API 实战 -> 正文阅读

[Java知识库]9:JDBC-Java API 实战

1. 说明

用Java语言操作Mysql,首先需要学习Mysql

安装教程详见:一、安装、连接以及配置MySQL
Mysql基础教程详见:「MySQL」从零到删库

2. JDBC的由来以及定义

Java数据库连接,(Java Database Connectivity,简称JDBC)
是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。JDBC是面向关系型数据库的。
Java数据库连接 JDBC是Java操作各数据库的一种规范。
假设Java公司是布料厂,那么各SQL数据库公司就是服装设计厂
Java公司规定JDBC接口,允许去操作各数据库,相当于原材料,各SQL公司去实现接口,相当于拿原材料设计出自己的服装。

3. JDBC体验,statement.executeQuery() 查询

Java Mysql Jar包下载MySQL Connector/J
jar包就相当于物流,将布料厂的原材料运输到服装设计厂里,让服装厂设计,这里选择5.1.6
引入jar包并导入库中
在这里插入图片描述
连接数据库并创建一个Info表
在这里插入图片描述

在这里插入图片描述

4. 整理和释放

导入的包都是在 java.sql里的
import java.sql.*;
规范代码

public class JDBCDemo01 {
    public static final String URL = "jdbc:mysql://127.0.0.1:3306/student";
    public static final String USER = "root";
    public static final String PASSWORD = "a6812587";
    public static final String DRIVER = "com.mysql.jdbc.Driver";

    public static Connection connection;
    public static Statement statement;
    public static ResultSet resultSet;
    public static void main(String[] args) {
        try {
        //1.加载驱动程序,给布料厂打电话,我是mysql公司的
        Class.forName(DRIVER);
        //2.获得数据库的连接,告诉物流具体走什么路线
        connection = DriverManager.getConnection(URL, USER, PASSWORD);
        //3.获取数据库操作对象,货送到了,然后卸货到仓库
        statement = connection.createStatement();
        //4.从仓库中筛选出要用的货,查询Sql语句
        resultSet = statement.executeQuery("SELECT * FROM info");            
        while (resultSet.next()){
            int id = resultSet.getInt(1);
            String name = resultSet.getString(2);
            int age = resultSet.getInt(3);

            System.out.println("[" + id + ","+ name+ "," + age + "]");
        }
        //5.完成所有操作,关闭结果,关闭仓库,再关闭数据库连接
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                resultSet.close();
                statement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

5. 封装JDBCUtils

如果每次查询都要重新写配置文件
在src下创建db.properties配置文件,写入配置项

在这里插入图片描述

创建com.google.util包,创建JDBCUtils类

public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    private static String driver;
    //静态代码,做预处理
    static {
        try {
            //JDBCUtils.class.getClassLoader()
            //读取配置文件
            InputStream inputStream = ClassLoader.getSystemResourceAsStream("db.properties");
            //加载对象
            Properties properties = new Properties();
            properties.load(inputStream);

            //读取配置项
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            password = properties.getProperty("password");
            driver = properties.getProperty("driver");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //4.测试是否加载成功
    public static void init(){
        System.out.println("加载成功");
    }
    //5.创建单例,获取配置项
    public static Connection getConnection() throws SQLException{
        return DriverManager.getConnection(url, user, password);
    }
    //6.释放,关闭结果,关闭仓库,关闭数据库连接
    public static void close(Connection connection, Statement statement, ResultSet resultSet) throws SQLException {
        if (resultSet != null){
            resultSet.close();
        }
        if (statement != null){
            statement.close();
        }
        if (connection != null){
            connection.close();
        }
    }
    public static void close(Connection connection, Statement statement) throws SQLException {

        if (statement != null){
            statement.close();
        }
        if (connection != null){
            connection.close();
        }
    }
}

创建测试类,测试能否加载JDBCUtils
在这里插入图片描述

6. 增删改 —— executeUpdate()

确认获取数据库连接和操作对象信息
在这里插入图片描述
只有查询是executeQuery,增删改都是executeUpdate
在这里插入图片描述

查看数据库已经插入成功

在这里插入图片描述
更新或者删除,也是同理
在这里插入图片描述

在这里插入图片描述

    public void UpdateTest(){
        try {
            //1.获取数据库连接和操作对象
            connection = JDBCUtils.getConnection();
            statement = connection.createStatement();
            //2.更新一条数据
            String sql = "update info set name ='Pig' where id = 4";
            int res = statement.executeUpdate(sql);
            //3.判断数据是否更新成功
            if (res != 0){
                System.out.println("Update success");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
             //4.调用重载方法,关闭仓库和数据库连接
                JDBCUtils.close(connection, statement);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

7. 字符编码问题——装x需谨慎

如果插入中文时乱码怎么办?
字符编码问题,需要更改IDE、数据库、终端的编码格式为UTF-8,在配置项中添加字符编码
在这里插入图片描述

参考:2.6 修改数据库字符编码

在这里插入图片描述

在这里插入图片描述

url = jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf-8
user = root
password = xxxxxx
driver = com.mysql.jdbc.Driver

8. PreparedStatement和问号占位符

9. 最终Demo说明

10. 对象的封装,重构代码, 学生管理系统模块化编程。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 11:57:15  更:2022-04-04 12:00:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:39:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码