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;
相关文章
|
Oracle 关系型数据库 数据库连接
Windows Server 2012更新补丁后导致Micosoft ODBC for Oracle出现问题
上周由于WannaCry勒索病毒肆虐全球,14号系统管理员更新了一系列补丁后,导致一Windows Server 2012服务器上面部署的一些老旧的应用无法使用Microsoft ODBC for Oracle访问ORACLE数据库。
934 0
|
3天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1089 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1753 9
|
9天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
696 152
|
11天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
661 14
|
6天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
446 5