Java-JDBC编程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 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
相关文章
|
12天前
|
算法 Java
【编程基础知识】Java打印九九乘法表
本文介绍了在Java中实现九九乘法表的三种方法:嵌套循环、数组和流控制。通过代码示例、流程图和表格对比,帮助读者深入理解每种方法的优缺点,提升编程技能。
52 2
|
12天前
|
存储 Java
【编程基础知识】 分析学生成绩:用Java二维数组存储与输出
本文介绍如何使用Java二维数组存储和处理多个学生的各科成绩,包括成绩的输入、存储及格式化输出,适合初学者实践Java基础知识。
44 1
|
4天前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
75 43
Java学习十六—掌握注解:让编程更简单
|
2天前
|
Java API 调度
Java中的多线程编程:理解与实践
本文旨在为读者提供对Java多线程编程的深入理解,包括其基本概念、实现方式以及常见问题的解决方案。通过阅读本文,读者将能够掌握Java多线程编程的核心知识,提高自己在并发编程方面的技能。
|
2天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
7 3
|
2天前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
8 2
|
2天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
8 2
|
2天前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
9 2
|
2天前
|
Java 开发者 UED
Java编程中的异常处理机制解析
在Java的世界里,异常处理是确保程序稳定性和可靠性的关键。本文将深入探讨Java的异常处理机制,包括异常的类型、如何捕获和处理异常以及自定义异常的创建和使用。通过理解这些概念,开发者可以编写更加健壮和易于维护的代码。
|
2天前
|
Java
在Java多线程编程中,`wait()`和`notify()`方法的相遇如同一场奇妙的邂逅
在Java多线程编程中,`wait()`和`notify()`方法的相遇如同一场奇妙的邂逅。它们用于线程间通信,使线程能够协作完成任务。通过这些方法,生产者和消费者线程可以高效地管理共享资源,确保程序的有序运行。正确使用这些方法需要遵循同步规则,避免虚假唤醒等问题。示例代码展示了如何在生产者-消费者模型中使用`wait()`和`notify()`。
7 1