Java学习路线-40:Java数据库编程基础操作

简介: Java学习路线-40:Java数据库编程基础操作

第36 章 : Java数据库编程基础操作

156 JDBC简介

JDBC 属于一种服务,所有服务都必须按照指定的流程进行操作

Java Database Connectivity

开发包 java.sql

核心组成 DriverManager

接口 Connection、Statement、PreparedStatement、ResultSet


四种连接方式:

JDBC-ODBC 桥连接 JDK支持,性能较差

JDBC 一般只连接本地服务

JDBC网络连接 连接网络数据库

JDBC协议连接


157 连接MySQL数据库

需要配置驱动程序路径

通过反射机制加载数据库驱动程序类

整个JDBC设计实现的就是一个工厂类


pom.xml

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.18</version>
</dependency>
import java.sql.Connection;
import java.sql.DriverManager;
class Demo {
    // MySQL < 8.0
    // static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    // static final String DB_URL = "jdbc:mysql://localhost:3306/data";
    // MySQL >= 8.0
    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DB_URL = "jdbc:mysql://localhost:3306/data?useSSL=false&serverTimezone=UTC";
    private static final String USER = "root";
    private static final String PASSWORD = "123456";
    public static void main(String[] args) throws Exception {
        // 注册 JDBC 驱动
        Class.forName(JDBC_DRIVER);
        // 打开链接
        Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
        // 关闭链接
        conn.close();
    }
}

参考:

https://www.runoob.com/java/java-mysql-connect.html


第37 章 : Statement数据库操作接口

158 Statement接口简介

Statement 数据操作


门面设计模式


Connection - 创建 -> Statement - 操作 -> SQl数据库

常用操作


// 数据更新 insert update delete 返回影响行数
int executeUpdate(String sql)
// 数据查询 select 返回查询结果
ResultSet executeQuery(String sql)

159 Statement实现数据更新

新建学生表


create table student(
    id int not null PRIMARY key auto_increment,
    name varchar(20),
    age int
)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
class Demo {
    // MySQL >= 8.0
    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DB_URL = "jdbc:mysql://localhost:3306/data?useSSL=false&serverTimezone=UTC";
    private static final String USER = "root";
    private static final String PASSWORD = "123456";
    public static void main(String[] args) throws Exception {
        // 注册 JDBC 驱动
        Class.forName(JDBC_DRIVER);
        // 打开链接
        Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
        // 执行SQL语句
        Statement statement = conn.createStatement();
        String sql = "insert into student(name, age) values('Tom', 23)";
        int count = statement.executeUpdate(sql);
        System.out.println("insert count: " + count);
        // insert count: 1
        // 关闭链接
        conn.close();
    }
}

160 Statement实现数据查询

避免SELECT *查询,跟上具体要返回的字段名称

select查询结果过大也会对程序造成影响,注意加limit限制


// 查询数据
String sql = "select name, age from student";
ResultSet result = statement.executeQuery(sql);
while (result.next()){
    String name = result.getString("name");
    int age  = result.getInt("age");
    System.out.println(String.format("%s %s", name, age));
    // Tom 23
}

第38 章 : PreparedStatement数据库操作

161 Statement问题分析

Statement问题:

1、不能很好描述日期形式

2、SQL拼凑,造成编写与维护困难

3、对敏感字符数据不能合理拼凑


162 PreparedStatement接口简介

数据和SQL语句分离, 问号? 作为占位符

常用操作


// 数据更新
int executeUpdate()
// 数据查询
ResultSet executeQuery()

更新数据


String sql = "update student set age = ? where id = ? ";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setInt(1, 16);
statement.setInt(2, 1);
int count = statement.executeUpdate();
System.out.println("update count: " + count);
// 1

163 使用PreparedStatement实现数据查询操作

-- 查询全部数据
select name, age from student
-- 根据id查询数据
select name, age from student where id = ?
-- 分页查询
select name, age from student limit ?
-- 统计查询
select count(*) from student

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
233 1
|
2月前
|
Java
如何在Java中进行多线程编程
Java多线程编程常用方式包括:继承Thread类、实现Runnable接口、Callable接口(可返回结果)及使用线程池。推荐线程池以提升性能,避免频繁创建线程。结合同步与通信机制,可有效管理并发任务。
178 6
|
2月前
|
Java 容器
(Java)Java里JFrame窗体的基础操作(组件-1)
如果不熟悉组件,可以将组件看作是某个Form表单中的表单元素,当然这只是在不熟悉组件的前提下。如果深入了解了组件,那么它有着非常多的组件,这些组件可以完善JFrame窗口的布局,以及一些功能; 本篇内容中所有的组件所用到的类全都来自于javax.swing这个包中,记得引入
73 1
|
3月前
|
IDE Java 关系型数据库
Java 初学者学习路线(含代码示例)
本教程为Java初学者设计,涵盖基础语法、面向对象、集合、异常处理、文件操作、多线程、JDBC、Servlet及MyBatis等内容,每阶段配核心代码示例,强调动手实践,助你循序渐进掌握Java编程。
481 3
|
3月前
|
SQL Java 数据库
2025 年 Java 从零基础小白到编程高手的详细学习路线攻略
2025年Java学习路线涵盖基础语法、面向对象、数据库、JavaWeb、Spring全家桶、分布式、云原生与高并发技术,结合实战项目与源码分析,助力零基础学员系统掌握Java开发技能,从入门到精通,全面提升竞争力,顺利进阶编程高手。
719 1
|
2月前
|
安全 前端开发 Java
从反射到方法句柄:深入探索Java动态编程的终极解决方案
从反射到方法句柄,Java 动态编程不断演进。方法句柄以强类型、低开销、易优化的特性,解决反射性能差、类型弱、安全性低等问题,结合 `invokedynamic` 成为支撑 Lambda 与动态语言的终极方案。
168 0
|
3月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
472 100
|
3月前
|
SQL 算法 Java
零基础到精通的史上最强 Java 学习路线图推荐
史上最全Java学习路线图,涵盖基础语法、面向对象、数据结构与算法、多线程、JVM、Spring框架、数据库及项目实战,助你从零基础到精通Java开发,附完整代码与工具推荐。
276 3
零基础到精通的史上最强 Java 学习路线图推荐
|
3月前
|
NoSQL Java 关系型数据库
超全 Java 学习路线,帮你系统掌握编程的超详细 Java 学习路线
本文为超全Java学习路线,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架(如Spring Boot)、数据库(MySQL、Redis)及项目实战等内容,助力从零基础到企业级开发高手的进阶之路。
350 1
|
3月前
|
SQL 算法 Java
适合自学的史上最强 Java 学习路线图分享
本路线图系统讲解Java从入门到进阶的学习路径,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架如Spring、数据库操作及项目实战,助你全面掌握Java开发技能,适合零基础及进阶学习。
914 0

热门文章

最新文章