首页 > 编程语言 >Java登陆第九天——JDBC

Java登陆第九天——JDBC

时间:2023-11-19 16:34:02浏览次数:27  
标签:第九天 JDBC Java String 数据库 SQLException sql 方法 throws

JDBC

JDBC本身是Java提供的一套标准接口,由不同数据库厂商提供接口的具体实现。

至此,开发者只需调用JDBC就可以完成对各种数据库的操作。

mysql-jdbc-maven坐标

<!-- Mysql版本:5.7.36 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>

JDBC主要类及接口

JDBC核心是为开发者提供的Java API库。(Java API是指提供各种功能的Java类\接口)

开发者使用JDBC可以创建数据库连接、执行SQL语句、检索结果集等。

java.sql包下常用类与接口如下:

全类名 类型 描述
java.sql.DriverManager 管理JDBC驱动程序
java.sql.Connection 接口 建立与某数据库连接,一个连接就是一个会话
java.sql.Statement 接口 执行SQL,并返回SQL执行后的结果
java.sql.PreparedStatement 接口 更安全效率的执行SQL,并返回SQL执行后的结果
java.sql.ResultSet 接口 SQL执行后的结果集

DriverManager类常用方法

正确加载jar包后,可以使用DriverManager类连接数据库,常用方法如下:

方法 类型 描述
public static Connection getConnection(String url,String user, String password) throws SQLException 静态方法 通过地址连接数据库,并传入用户名和密码

Mysql数据库连接地址形式如下:

String url= "jdbc:mysql://IP地址:端口号/数据库名";

//假设本机上存在一个tt数据库。那么地址应该如下
jdbc:mysql://localhost:3306/tt

getConnection()方法返回的是一个Connection对象。

Connection接口常用方法

所有数据库操作都从Connection接口开始。常用方法如下:

方法 类型 描述
Statement createStatement() throws SQLException 普通方法 创建Statement对象并返回
PreparedStatement prepareStatement(String sql) throws SQLException 普通方法 创建prepareStatement对象并返回
boolean isClosed() throws SQLException 普通方法 判断连接是否已关闭
void close() throws SQLException 普通方法 关闭数据库
void setAutoCommit(boolean autoCommit) throws SQLException 普通方法 设置数据库的自动提交(事务)
boolean getAutoCommit() throws SQLException 普通方法 判断数据库是否自动提交(事务)
Savepoint setSavepoint(String name) throws SQLException 普通方法 设置某保存点(事务)
void rollback() throws SQLException 普通方法 全部回滚(事务)
void rollback(Savepoint savepoint) throws SQLException 普通方法 回滚到某保存点(事务)
void commit() throws SQLException 普通方法 提交(事务)

栗子:连接数据库

代码如下:

    public static void main(String[] args) {
        String user="root";
        String password="0000";

        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/UserTest",user,password);
            System.out.println(connection);//有输出内容就证明连接数据库成功。

            connection.close();//同IO流一样,建议使用完毕就关闭连接。
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }

    }

程序运行结果:

Sun Nov 19 15:25:54 CST 2023 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

com.mysql.jdbc.JDBC4Connection@d44fc21

警告信息是不建议在没有身份验证的情况下建立SSL连接。不影响正常使用。

警告信息的解决办法:

jdbc:mysql://localhost:3306/UserTest?useSSL=false
//加上参数useSSL=false关闭身份验证

连接数据库后肯定需要执行SQL对数据库进行操作。

Statement接口常用方法

Statement接口负责执行SQL。常用方法如下:

方法 类型 描述
int executeUpdate(String sql) throws SQLException 普通方法 执行DML操作,返回更新的行数
ResultSet executeQuery(String sql) throws SQLException 普通方法 执行DQL操作,返回查询的结果集
boolean execute(String sql) throws SQLException 普通方法 执行SQL语句
void close() throws SQLException 普通方法 关闭Statement操作
DDL——数据定义语言。用于定义数据的结构。 指的是增,删,改数据库
DML——数据操作语言。用于检索或修改数据。 指的是增,删,改数据
DQL——数据查询语言。用于查询各种形式的数据。 指的是查询数据
DCL——数据控制语言。用于定义数据库用户的权限。 指的是管理数据库权限

栗子:在pon表中新增数据(水杯,52)

代码如下:

    public static void main(String[] args) {
        String user="root";
        String password="0000";

        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/UserTest?useSSL=false",user,password);
            Statement statement = connection.createStatement();
            statement.executeUpdate("insert into pon values ('水杯','52')");
            System.out.println("1");//证明执行到了这一步。

            statement.close();//先开启的资源后关闭
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

程序运行结果:

1

使用Navicat查看pon表。(Navicat:数据库图形界面工具)
image

executeQuery()方法的返回类型是ResultSet。此对象中存放了所有查询结果。

ResultSet接口常用方法

ResultSet存放的是DQL查询的数据。常用方法如下:

方法 类型 描述
普通方法
普通方法
普通方法
普通方法

待编辑,看S13总决赛去了。

标签:第九天,JDBC,Java,String,数据库,SQLException,sql,方法,throws
From: https://www.cnblogs.com/Ocraft/p/17842204.html

相关文章

  • java反序列化----CC5利用链学习笔记
    java反序列化----CC5利用链学习笔记目录java反序列化----CC5利用链学习笔记环境配置利用链TiedMapEntryBadAttributeValueExpException参考文章环境配置jdk8u(无java版本要求)pom.xml中写入<dependency><groupId>commons-collections</groupId>......
  • 【Java基础】数组的动态初始化
    数组动态初始化:手动指定数组长度,系统为数组自动分配默认初始化值格式:数据类型[]数组名=new数据类型[长度];默认值的分类:整数:0小数:0.0布尔:false字符:'\u0000'(Unicode字符,常见的体现是空白字符)引用数据类型(数组、类、接口):null......
  • Java是一种高级编程语言,
    Java是一种高级编程语言,由SunMicrosystems(后来被Oracle收购)的詹姆斯·高斯林(JamesGosling)等人开发。Java的设计目标是实现“一次编写,随处运行”的理念,即通过一次编写程序,可以在多个平台上运行,而无需对程序进行修改。Java的发展可以追溯到20世纪90年代初。在当时,Sun公司致力于开......
  • JavaScript-进度事件
    进度事件的种类进度事件用来描述资源加载的进度,主要由AJAX请求、<img>、<audio>、<video>、<style>、<link>等外部资源的加载触发,继承了ProgressEvent接口。它主要包含以下几种事件。abort:外部资源中止加载时(比如用户取消)触发。如果发生错误导致中止,不会触发该事件。error:由于错......
  • 23届二本Java选手的自我介绍
    首先自我介绍,本人湖南二本学历,23年应届生,计算机科班。从大三开始系统学习Java知识,在去年历经过找实习时候的无人搭理,秋招互联网寒冬,见过很多公司一本学历点击就送,二本学历直接挂简历的,春招见过同学BOSS几千个招呼却约不到几场面试的,见到了同班10个Java方向的同学到头来只剩我一人还......
  • Java零基础入门-关系运算符
    前言Java作为一门广受欢迎的开发语言,其在企业级应用和移动应用开发中有着广泛的应用。如果你是一个Java零基础的初学者,那么你来到了一个正确的地方。在本篇文章中,我们会详细介绍Java中的关系运算符,帮助你快速入门。摘要本文主要介绍Java中的关系运算符。关系运算符用于比较两个......
  • Java中的Set集合之TreeSet
    TreeSet:TreeSet是一个有序集合,它扩展了AbstractSet类并实现了NavigableSet接口。以下是此实现最重要方面的快速摘要:它存储唯一的元素它不保留元素的插入顺序它按升序对元素进行排序它不是线程安全的在该实现中,对象根据其自然顺序以升序排序和存储。该TreeSet中使用的是一......
  • JAVA中的函数接口,你都用过吗
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。在这篇文章中,我们将通过示例来学习Java函数式接口。函数式接口的特点只包含一个抽象方法的接口称为函数式接口。它可以有任意数量的默认静态方法,但只能包含一个抽象方法。它还可以声明对象类......
  • 史上功能最全的Java权限认证框架!
    大家好,我是Java陈序员。权限认证是我们日常开发绕不过的话题,这是因为我们的应用程序需要防护,防止被窜入和攻击。在Java后端开发中,实现权限认证有很多种方案可以选择,一个拦截器、过滤器也许就可以轻松搞定。当然,现在也有很多成熟的框架,供我们选择。轻量的Shiro,Spring家族的......
  • Java环境变量配置
    在初次写HelloWorld程序的时候出错了,编译成功,执行出错了(找不到或无法加载主类HelloWorld),编译成功说明环境变量Path没问题,最后发现是没有配置环境变量Classpath以下是程序以及报错  以下是我查找问题的步骤一.编译运行前需要注意的易错点1.代码有无错误2.以.java文件......