Java-JDBC编程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Java-JDBC编程使用JDBC连接访问数据库需要经过以下几个步骤:

Java-JDBC编程

使用JDBC连接访问数据库需要经过以下几个步骤:


f9ea40bb6365454b8ea4d3bd9d9ecefe.png

1、加载数据库驱动

JDBC是由两部分与数据库独立的接口组成,一部分是面向程序程序开发人员的JDBC API,另一部分是面向底层的JDBC Driver API。而JDBC驱动程序就是由实施了这些接口的类组成,主要用于与数据库服务器交换信息


Class.forName("com.mysql.cj.jdbc.Driver");


老版的数据库驱动则为"com.mysql.jdbc.Driver";


2、建立与数据库的连接

通常使用DriverManager类的getConnection()方法来获取数据库的连接对象,只有创建对象之后才可以对数据进行相关操作。它的获取方法如下:


DriverManager.getConnection(String URL, String USER, String PASSWORD);


其中:


1)URL——数据库连接字符串,不同的数据库虽有区别但都遵循“JDBC协议+IP地址或域名+端口+数据库名称”的格式,其中MySQL数据库的URL一般是"jdbc:mysql://localhost:3306/test"


2)USER——链接数据库的用户名


3)PASSWORD——链接数据库的密码


如果数连接失败,请先确认数据库的服务是否开启,只有数据库的服务处于开启状态才能成功地与数据库建立连接


此外还应该使用try-catch语句将连接语句包围起来捕获异常


3、向数据库发送SQL命令

向数据库进行操作和访问的是Statement对象,而该对象不是通过Statement类直接创建的,而是通过Connection对象所提供的方法,如:


1)createStatement()方法:用于创建一个基本的Statement对象,该对象主要用于执行静态SQL语句


2)prepareStatement(String sql)方法:根据参数化的SQL语句创建一个预编译的PrepareStatement对象,该对象主要用于执行动态SQL语句


3)prepareCall(String sql)方法:根据SQL语句来创建一个CallableStatement对象,该对象主要用于执行数据库存储操作


获取Statement对象后,就可以通过调用它的不同方法来执行不同的SQL语句,如:


1)ResultSet executeQuery(String sql):专门用于查询


2)int executeUpdate(String sql):执行DDL、DML语句,前者返回0,后者返回受影响行数

4、处理数据库返回的结果集

SQL的查询结果都是经过ResultSet封装的,ResultSet结果集包含满足SQL查询语句的所有行,读取其数据的方法主要是getXXX(),它的参数可以是用来表示第几列(从1开始)的整型,也可以是列名,返回的是对应的XXX类型的值


getString()可以返回所有列的值,不过返回的都是字符串类型


getArray(int colindex/String columnname)可以获得当前行中,colindex所在列的元素组成的对象的数组

5、断开与数据库的连接

1)关闭结果集,如rs.close()

2)关闭statement对象,如stmt.close()

3)关闭连接,如con.close()

6、示例

package com.demo;
import java.sql.*;
public class JdbcDemo {
    public static void main(String[] args) {
        try {
            //加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //连接数据库,创建数据库连接对象
            Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.247.129/myscore", "root", "123456");
            //创建访问和操作数据库的对象
            Statement st = conn.createStatement();
            //定义sql语句
            String sql = "select * from ScoreNow";
            //使用sql语句操作数据库并放回结果集rs
            ResultSet rs = st.executeQuery(sql);
            //处理得到的结果
            while(rs.next()){
                int id = rs.getInt(1);
                String subject = rs.getString("Subject");
                double score = rs.getDouble("Score");
                int rank = rs.getInt("Rank");
                System.out.println("第" + id + "场考试——" + "考试科目为" + subject + ",我取得了" + score +"分," + "在班级排名第" + rank + "名");
            }
            rs.close();//关闭结果集对象
            st.close();//关闭statement对象
            conn.close();//关闭数据库连接
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
设计模式 安全 Java
Java编程中的单例模式:理解与实践
【10月更文挑战第31天】在Java的世界里,单例模式是一种优雅的解决方案,它确保一个类只有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的实现方式、使用场景及其优缺点,同时提供代码示例以加深理解。无论你是Java新手还是有经验的开发者,掌握单例模式都将是你技能库中的宝贵财富。
38 2
|
20天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
26天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
102 3
|
1月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
117 5
|
28天前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
105 53
|
5天前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####
|
19天前
|
Java 开发者
Java多线程编程的艺术与实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的技术文档,本文以实战为导向,通过生动的实例和详尽的代码解析,引领读者领略多线程编程的魅力,掌握其在提升应用性能、优化资源利用方面的关键作用。无论你是Java初学者还是有一定经验的开发者,本文都将为你打开多线程编程的新视角。 ####
|
18天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
21天前
|
安全 Java 开发者
Java多线程编程中的常见问题与解决方案
本文深入探讨了Java多线程编程中常见的问题,包括线程安全问题、死锁、竞态条件等,并提供了相应的解决策略。文章首先介绍了多线程的基础知识,随后详细分析了每个问题的产生原因和典型场景,最后提出了实用的解决方案,旨在帮助开发者提高多线程程序的稳定性和性能。
|
27天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####