JDBC编码六步走

2023-11-01

JDBC介绍

Java Database Connectivity(简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口

JDBC的本质

JDBC是SUN公司制定的一套连接数据库的接口(interface)。而接口都有调用者(程序员)和实现者(各大数据库厂商),这些面向接口调用。面向接口写实现类的操作,都属于面向接口编程思想。

面向接口编程是一种非常受益的思想,java的多态机制就是个典型范例(面向抽象编程)。

第一步:注册驱动

作用是告知java程序即将要连接的数据库厂商品牌(MySQL、Oracle、SQLserver)。

第二步:获取连接

打开JVM进程与数据库进程之间的通道,属于进程间通信,重量级。

第三步:获取数据库操作对象

专门执行SQL语句的对象。

第四步:执行SQL语句(DQL、DML)

第五步:处理查询结果

只有当第四步执行的是select语句时,才会处理查询后的结果集。

第六步:释放资源

使用完毕,一定要及时关闭连接。

数据驱动jar包,各种mysql-connector-java版本下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java

注意:mysql8和mysql5的导入包路径不同。
mysql5:com.mysql.jdbc.Driver
mysql8:com.mysql.cj.jdbc.Driver

我这里用的是mysql-connector-java-8.0.22.jar,下面IDEA演示操作:

1、添加jar包至library库中。

我事先在项目中创建了名为jdbc_test模块。

(1)选择File-》Project Structure

(2)选择Libraries-》点击‘+’号-》Java

 (3)选择下载好的mysql驱动,点击OK

 (4)选择jdbc_test模块,点击OK

最后别忘了Apply和OK,这样成功添加进来了。

 

2、连接代码测试示例:

public class JDBCTest01 {
    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        Statement stmt = null;
        // 1、注册驱动
        Driver driver = new com.mysql.cj.jdbc.Driver();
        DriverManager.registerDriver(driver);
        // 2、获取连接
        String url = "jdbc:mysql://127.0.0.1:3306/bookstore?serverTimezone=UTC";
        String user = "root";
        String password = "xxx"; // 自己的数据库密码
        conn = DriverManager.getConnection(url, user, password);
        System.out.println("数据库连接对象:" + conn);
//        com.mysql.cj.jdbc.ConnectionImpl@3dd3bcd

        // 3、获取数据库操作对象
        // Statement createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
        stmt = conn.createStatement();

        // 4、执行sql语句
        // int executeUpdate(String sql)
        // 专门执行DML语句,返回值是“影响数据库中的记录条数”
//        int count = stmt.executeUpdate("update dept set dname = '销售部',loc = '合肥' where deptno = 20;");
        int count = stmt.executeUpdate("update users set username= 'mike' where id=13;");
        System.out.println(count == 1 ? "保存成功":"保存失败");

        // 5、处理查询结果集

        // 6、释放资源
        // 从小到大,从后往前依次关闭
        try	{
            stmt.close();
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
        if(conn != null) {
            try	{
                conn.close();
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

 如果启动报时区错误的话,在你连接数据库的url后加上参数 ?serverTimezone=UTC。

3、执行结果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDBC编码六步走 的相关文章

  • 透明平开窗

    我有一点JWindow上面有一个标志 用户可以将东西拖到上面 我主要在 OS X 上开发我的应用程序 为了获得我使用的透明窗口 setBackground new Color 0 0 0 0 在 Mac 上 这工作得很好 但在 Window
  • 多线程环境下如何更好的使用ExecutorService?

    我需要创建一个库 其中包含同步和异步方法 executeSynchronous 等待直到有结果 返回结果 executeAsynchronous 立即返回一个 Future 如果需要 可以在其他事情完成后进行处理 我的图书馆的核心逻辑 客户
  • JavaFX Platform.runLater 的使用以及从不同线程访问 UI

    我有几个问题Platform runLater 我有一个 JavaFX 应用程序类 在这个类中 我运行一个线程 该线程从网络套接字读取数据 现在当我创建一个新的Stage在线程内部 系统抛出异常 JavaFX 事件调度程序线程和我的网络读取
  • Javadoc 1.5 和 1.6 中缺少 enum.valueOf(String name)

    这可能是一个愚蠢的问题 但我正在使用该方法enum valueOf String name 那里没问题 只是当我检查 javadoc 以了解有关此方法的更多信息时 我找不到它 有javadoc用于valueOf Class
  • 对 Java 中 *any* 类的所有实例进行全排序

    我不确定以下代码是否能确保 Comparator 的 Javadoc 中给出的所有条件 class TotalOrder
  • RSA SignatureException:签名长度不正确

    我在签署 rsa 签名时遇到问题 我有一个用私钥加密的签名 然而 当我尝试使用公钥验证它时遇到问题 我得到以下异常 java security SignatureException Signature length not correct
  • 在 TestNG 中运行多个类

    我正在尝试自动化一个场景 其中我想登录一次应用程序 然后进行操作而无需再次重新登录 考虑一下 我有在特定类的 BeforeSuite 方法中登录应用程序的代码 public class TestNGClass1 public static
  • 是否可以从另一个方法传递 args[] 来调用 main 方法?

    我试图从另一个传递参数的方法调用类的主要方法 就像从命令行运行该类时一样 有没有办法做到这一点 您可以致电main方法就像您调用任何其他 静态 方法一样 MyClass main new String arg1 arg2 arg3 Exam
  • 如何将自定义日志处理程序添加到 Google App Engine?

    我正在尝试向我的 java 应用程序添加自定义日志处理程序 我已经实现了一个扩展 java util Logging Handler 类的 InnerLogger 类 在我的logging properties中声明为处理程序 handle
  • Java 唤醒休眠线程

    我阅读了其他帖子 但没有找到我正在寻找的确切答案 所以我希望有人能给出一些澄清 我有一个将运行一段时间的程序 我有一些在后台运行的线程来执行各种任务 为了简单起见 让我们考虑 3 个线程 ThreadA每 10 秒执行一次任务 其中Thre
  • 以编程方式设置 Logback Appender 路径

    我正在尝试以编程方式设置 Logback 附加程序路径 滚动文件附加器 http logback qos ch apidocs ch qos logback core rolling RollingFileAppender html准确地说
  • Java 泛型:如何为泛型类型指定类类型?

    我有一个 POJO 指定为 MyClass u where U是泛型类型参数 我正在尝试编写一个接受类引用的实用方法Class u
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • SimpleDateFormat 将 lenient 设置为 false 时出现异常

    为什么这段代码会抛出无法解析日期的异常 SimpleDateFormat f new SimpleDateFormat yyyy MM dd T HH mm ss 000Z f setLenient false String dateStr
  • Java ConcurrentModificationException [重复]

    这个问题在这里已经有答案了 当删除倒数第二个元素时 没有 ConcurrentModificationException List
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 如何使用云打印打印Android活动显示

    我正在尝试将 Google 云打印实现到应用程序中 遵循集成指南 https developers google com cloud print docs android 我试图通过打印 google com 来保持基本 单击我创建的打印按
  • 在服务器内部调用 Web 服务

    我有一个网络服务 getEmployee 当传递 id 时 它会获取单个员工的员工详细信息 同一服务器上的另一个 Web 服务 getEmployeeList 当传递一个部门时 它会获取整个员工列表 这将获取部门的 ID 然后调用 getE
  • 如何从spark中的hbase表中获取所有数据

    我在 hbase 中有一个大表 名称为 UserAction 它具有三个列族 歌曲 专辑 歌手 我需要从 歌曲 列族中获取所有数据作为 JavaRDD 对象 我尝试了这段代码 但效率不高 有更好的解决方案来做到这一点吗 static Spa
  • 我找不到 IntelliJ 快捷方式

    我使用 vim 一段时间 我知道有一个 intellij vim 插件 我很好奇内置的 IntelliJ 文本导航存在什么 如何打开实时模板来创建模板 如何查看以 tr 开头的现有模板列表 如何进行全局搜索并在当前文档中进行搜索 然后转到下

随机推荐

  • vue实现锚点定位(多级动态菜单)

    现在有一个需求是实现多级动态菜单点击跳转到相应位置 一般这种需求实现起来就是href id的方式锚点定位 但是这种方式的滚动很生硬 故不采纳 我使用的方案是根据id 获取到当前元素距离body顶部的距离 判断此时滚动条需要滚动的距离 再通过
  • (2020)End-to-end Neural Coreference Resolution论文笔记

    2020End to end Neural Coreference Resolution论文笔记 Abstract 1 Introduction 2 Related Work 3 Task 4 Model 4 1 Scoring Archi
  • Android studio中使用ViewPager和BottomNavigationView实现底部导航栏和碎片的同步切换

    前言 通过几次的踩雷和摸索 完成了以上的操作 本教程写的详细全面 包教包会 对新手有好 看了不会的联系我 我倒立洗头给你看 1 需要了解的一些知识 所需控件 fragment 作为Android中最常用的控件 它有自己的声明周期 可以粗略地
  • 静态代码检测工具 cppcheck ubantu下安装及使用教程

    Cppcheck是用在C C 中对code进行静态检查的工具 它的源码在 GitHub danmar cppcheck static analysis of C C code 它的License是GPL 3 0 它可以帮助我们检测出代码存在
  • Qt 插件创建教程

    Qt 插件创建教程 Qt 是一款非常流行的跨平台GUI应用程序开发工具 它提供了丰富的API和工具库 让开发者快速开发出高质量的应用程序 其中 在Qt中 插件是一个非常重要的概念 它可以帮助我们实现模块化编程 可以让我们的应用程序更加灵活
  • Linux内核学习笔记(八)Page Cache与Page回写

    你也可以通过我的独立博客 www huliujia com 获取本篇文章 综述 Page cache是通过将磁盘中的数据缓存到内存中 从而减少磁盘I O操作 从而提高性能 此外 还要确保在page cache中的数据更改时能够被同步到磁盘上
  • 数值分析实验(二)迭代法的应用

    目录 实验名称 数值分析实验 二 迭代法的应用 实验题目 实验原理 1 高斯消去法 2 Jacobi迭代法 3 G S迭代法 4 SOR迭代法 实验数据记录及处理 实验内容及步骤 1 高斯消元法 2 Jacobi迭代法 3 G S迭代法 4
  • 如何使用Python进行桌面应用开发?

    Python提供了多个库和框架来进行桌面应用开发 以下是使用Python进行桌面应用开发的常用方法之一 PyQt PyQt是一个用于开发跨平台桌面应用的Python库 它提供了丰富的GUI组件和工具 以下是使用PyQt创建桌面应用的基本步骤
  • Linux上启用kvm嵌套虚拟化功能

    kvm支持嵌套虚拟化 即可以在虚拟机中创建虚拟机 本文主要介绍如何在使用Intel处理器的CentOS7中开启KVM的嵌套虚拟化功能 kvm主要是通过内核模块来实现的 因此我们查看系统是否开启了kvm嵌套虚拟化 只需要 cat sys mo
  • 代码随想录算法训练营 个人总结

    训练营周期 2023 5 10 7 8 共计60天 LeetCode记录 参加训练营之前 就有想刷LeetCode的想法 一方便没有头绪地不知道按什么顺序刷题 另一方面也没有找到很好的讲解材料 都是自己看LeetCode页面上讨论模块下的高
  • Spark SQL数据源 - 基本操作

    目录 一 基本操作 二 默认数据源 一 默认数据源Parquet 二 案例演示读取Parquet文件 1 在Spark Shell中演示 2 通过Scala程序演示 一 基本操作 Spark SQL提供了两个常用的加载数据和写入数据的方法
  • git上创建自己的仓库并将新项目推上去

    1 在github上创建仓库 创建后复制地址 2 先进入项目文件夹 通过命令 git init 把这个目录变成git可以管理的仓库 git init 3 把文件添加到版本库中 使用命令 git add 添加到暂存区里面去 不要忘记后面的小数
  • 【华为OD机试真题2023B卷 JAVA&JS】找单词

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 找单词 时间限制 1秒 内存限制 32768K 语言限制 不限 题目描述 给一个字符串和一个二维字符数组 如果该字符串存在于该数组中 则按字符串的字符顺序输出字符串每个字符所在单元格的
  • matlab newff函数弃用了,MATLAB神经网络函数NEWFF()新旧用法差异

    摘要 在Matlab R2010a版中 如果要创建一个具有两个隐含层 且神经元数分别为5 3的前向BP网络 使用旧的语法可以这样写 net1 newff minmax P 5 3 1 注意minmax 函数的使用 还有对输出层神经元数 1
  • 论文笔记:用于动态薄膜干涉测量的高光谱成像《Hyperspectral imaging for dynamic thin film interferometry》

    论文地址 Hyperspectral imaging for dynamic thin film interferometry Scientific Reports 目录 论文简介 阻因 现有方法及缺陷 文章贡献 理论依据 实验 实验结果与
  • php curlopt_header,php curl中CURLOPT_HTTPHEADER 这个参数的含义

    php curl中CURLOPT HTTPHEADER 这个参数的含义是 CURLOPT HTTPHEADER 一个用来设置HTTP头字段的数组 Content Type 表示后面的文档属于什么MIME类型 charset表示浏览器可接受的
  • Unity之使UI显示在最上层

    一 原理 Camera Depth 摄像机深度 深度值越小 越浅 越浮于表面 越近 前 Sorting Layer 排序层级 Order In Layer 在排序层中的层级 Render Queue 在Shader中对Tags的Queue进
  • 哗啦啦收银系统配置

    步骤 一 安装哗啦啦收银系统二 安装小票驱动三 创建店铺 进入收银系统 详情请参考我的个人博客 哗啦啦系统后台新增店铺 四 修改打印机模板五 修改打印机名称 准备 小票驱动 安装包 打印模板 功能包 一 安装哗啦啦收银系统 二 安装小票驱动
  • Python IDLE的下载,安装与使用教程

    本次是windows下的IDLE Linux IDLE是没有的 可以直接使用相应的Python 解释器 首先我们现在先进入Python的官网 https www python org 去下载一个Python IDLE程序安装包 找到Down
  • JDBC编码六步走

    JDBC介绍 Java Database Connectivity 简称JDBC 是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口 JDBC的本质 JDBC是SUN公司制定的一套连接数据库的接口 interface 而接口都