JDBC知识

JDBC是什么?

这工作中我们针对数据库的操作,实际上很少会用到SQL语句,通过命令行/图形化来操作数据库,更多的是通过主流的编程语言来对数据库进行操作,即使通过代码来操作数据,我们还是会使用到SQL语句,所以掌握SQL语句也是很重要的.

如何通过代码操作数据库?

通过代码操作数据库,前提是,数据库需要提供一组API,供其他程序调用,

什么是API(application programming interface)(非常常见)

在编程中,写代码不是从0开始,会调用别人已经写好的代码,我们称之为"库",这些代码里就提供的一些 类/方法/函数 就可以称为API.

JDBC的由来

数据库这样的软件也会提供API供其他人使用,但是数据库有很多种,比如Oracle,MySQL等等,这些数据库提供的API都不一样,每个数据库都有自己的一套API,对于程序员来说,没切换一个数据库,就要重新学习一套API准则,所以为了有一套标准的数据库API体系,Java自身制定了一套准则,各种数据库都要把自己的API转化成和Java这一套兼容的API,Java针对数据库提供API称之为JDBC

如何把MySQL的API转化成兼容JDBC的API

MySQL官方提供了一个mysql-connector(这个不是mysql自带的,也不是java自带的,需要通过第三方途径,把这个东西下载下并且导入到自己的项目中 )这个东西,就可以完成转换,

mysql-connector,把MySQL的原生api转化成Java的api,通过下载第三方库(Java中后缀通常是jar)的插件,我们也称之jar包

怎么使用JDBC呢

1)下载jar包

2)将jar包导入到自己的项目中

    a) 先在项目中创建一个目录,名字随便取,但是不要带有中午/特殊字符,

创建一个Director目录,名字一般取成lib(library)在编程中是库的意思

b)创建好目录以后直接选中jar包,将其直接复制给目录文件中去

c)右键lib目录,add as library (告诉idea 这lib是一个"库"目录)

点击Add as Library 

在点击ok就大功告成了

此时导完包,idea就可以自动识别jar包里都有啥,上述操作就是导入jar的基本操作

如何通过代码来操作JDBC的api呢?

其实有一点小难度,首先需要创建一个数据源对象,因为MySQL是客户端-服务器,

1.创建数据源对象

数据源对象描述了数据从哪里来,数据库服务器所在的位置,我们来看一下DataSource(Java标准库JDBC自带的接口)的源码

它是一个interface接口类型,所以我们要实例化它,就不能通过new来实例化,只能通过new实现他的子类来实例化对象

我们通过new MysqlDataSource()来实例化,使用Mysql就是这个,使用其他的数据库前面就是其他数据库的名字,导入其他的jar包即可

创建好对象之后就需要给对象设置必要的属性

1)数据库服务器在哪 2)访问数据库的账户是啥3)访问数据库的密码是啥

上述的几个操作都是在DataSource的子类中才有,本身是没有这个方法和属性的

第一行代码采用了向上转型()

为了设置属性,下面的三行代码向下转型

理解一下高耦合:一个模块出现问题会对其他模块造成很大的影响 

              低耦合:一个模块出现问题对其他模块造成很小的影响

              内聚:是不是把有关联的东西放在一起,放的越集中,就称之为高内聚,反之内聚越低

              低内聚: 写代码的时候,某个功能,可能需要很多代码配合完成,这些代码零散出现在你的工程中,想找到很费劲,(写代码时很不好的习惯)

写代码我们要追求高内聚,低耦合为的是以后方便维护代码      

2.和数据库服务器进行网络连接

URL:称为"唯一资源定位符",用来描述网络资源上的位置,数据库也可以理解成网络资源

上述操作都是为数据源对象设置基本属性,接下来就要开始进行数据库服务器的网络链接

会报错误,我们就需要看是什么错误

受查类异常,我们要么通过throw向上抛出异常,要么通过catch来捕捉异常,

在main函数后面加入一个这样的语句来解决报错,

dataSource.getConnection(),会返回一个Connection类型的对象,这个对象一定要选择正确Java.sql

此处建立连接不一定会成功,有很多种错误,

可能是有(数据库的ip/端口号/数据库名/相关参数/用户名密码)

数据库连接失败常见的报错

密码错误

数据库名字错误

连接失败(可能是端口出错,也有可能是ip错了,服务器没有正常运行,根据具体情况来分析)

3.通过程序构造sql语句

通过程序构造sql语句,我们基于PreparedStatement这个类来实现,在编程中翻译为预处理语句,正常来说在cmd敲得sql语句,是把sql发送到mysql服务器MySQL服务器负责解析,解析完成后执行,因为解析工作需要消耗资源,而且MySQL是一个客户端-服务器,同一时刻要给多个客户端提供服务,解析工作积少成多,也会比较消耗资源,我们就可以把解析工作放到客户端来进行解析(自己写的代码),客户端发sql之前把解析工作完成,就可以降低服务器的压力了

通过connection返回的对象

4.把sql上传到服务器进行执行

第一个主要进行的是查询操作,第二个进行的是更新操作(delete,update,create table)

5.进行资源的释放

通过调用close方法进行资源的释放,要与创建的顺序相反

上述在代码中写sql语句就直接把代码写死了,为了让代码更加灵活,我们可以使用Scanner包,进行键盘录入,?一个?就相当于是一个占位符类似于C语言中的%d的操作,可以通过set后面加上替换的类型来进行替换顺序是从1开始的

查询操作使用到一个ResultSet的集合类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/667855.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电脑缺少运行库,无法启动程序

在我们使用一些软件的时候,由于电脑缺少一些运行库,导致无法启动应用软件,此时需要我们安装缺少的运行库。 比如当电脑提示: Cannot load library Qt5Xlsx.dll 我们就需要下载C得运行库,以满足软件运行需要。 下载链…

特别实用的8个机器学习算法总结!建议收藏,反复观看!

个人主页:.Boss.-CSDN博客 目录 1.线性回归(Linear Regression) 2.多项式回归(Polynomial Regression) 3.岭回归(Ridge Regression) 4.Lasso回归(Lasso Regression) …

杰理-7014配置

杰理-7014配置 1.复制 7012A7 添加一个板级 2.根据自己的功能修改板级 & 以下修改(4M 7014f3) download.bat 修改调用文件 0x3E0000计算方法 echo offecho ******************************************************************************** e…

【Linux】开发工具入门指南,轻松掌握你的开发利器

开发工具 1. 软件包管理器yum1.1 软件包安装方式1.2 yum的"三板斧"1.3 yum的周边 2. 开发工具3. 编辑器vim4. 编译器gcc、g5. 项目自动化构建工具make、Makefile6. 进度条小程序7. 调试器gdb 1. 软件包管理器yum 1.1 软件包安装方式 源代码安装:用户手动…

vue中大屏可视化适配所有屏幕大小

1. 外部盒子 .screenBox {width: 100vw;height: 100vh;background: url("/assets/images/bg.png") no-repeat;background-size: cover; }2.比例盒子 外层盒子css定义 .boxScale {width: 1920px;height: 1080px;background-color: orange;transform-origin: left top;…

分享一个在linux中运行通义千问的方法

分享一个在linux中和通义千问交互的方法 效果展示: 整体步骤 分享一个在linux中和通义千问交互的方法效果展示:一、在阿里云appflow控制台创建连接流1、通过以下地址,在灵积平台创建个API-KEY,用于通义千问的连接凭证2、点击连接流-创建连接流3、第一步选择webhook4.第二步…

电磁兼容整改时磁环怎么选型

电磁兼容整改时磁环怎么选型 磁环的选型错误磁环特性纳米微晶磁环磁环选型示例磁环选型 一条线缆两端都有设备,那磁环应该放在哪里? 我们怎么样来选择这个磁环,通过磁环的吸收作用,让辐射的强度和传导发射的这个强度衰减更大的那我…

OpenCASCADE入门(2)——openCasCade7.6.0版本的exe方式安装,vs2017环境配置,编译和使用draw

3rd party Components | Open CASCADE Technology 目录 引出安装好vs2017和occt7.6设置环境变量 启动occt和编译关于custom.bat批处理文件双击运行 打开draw使用方式一:双击draw.bat批处理vs设置启动项 总结其他自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进…

【Vue】v-for中的key

文章目录 一、引入问题二、分析问题 一、引入问题 语法: key属性 "唯一值" 作用:给列表项添加的唯一标识。便于Vue进行列表项的正确排序复用。 为什么加key:Vue 的默认行为会尝试原地修改元素(就地复用)…

盘点那些对公关理解的误区

逢年过节回老家,亲朋好友都会问,你在北京做什么工作啊?小马识途营销顾问有几次说是做公关的,得到的回应很怪异,“那你酒量一定不错”“就是经常去酒店的那种吗?”“公关小姐?公关先生&#xff1…

[有监督学习]4.详细图解支持向量机

支持向量机 支持向量机(Support Vector Machine,SVM)是一种应用范围非常广泛的算法,既可以用于分类,也可以用于回归。 本节将介绍如何将线性支持向量机应用于二元分类问题,以间隔(margin&#…

提升船舶安全性与效率:隔离驱动芯片的应用

随着科技的不断发展,船舶行业也在不断迎来新的技术革新,其中隔离驱动芯片作为一种关键的电子元件,在船舶领域发挥着重要作用。本文将深入探讨隔离驱动芯片在船舶领域的应用及其技术特点。 隔离驱动芯片提升船舶系统安全性 船舶作为大型交通工…

View->Bitmap缩放到自定义ViewGroup的任意区域(Matrix方式绘制Bitmap)

Bitmap缩放和平移 加载一张Bitmap可能为宽高相同的正方形,也可能为宽高不同的矩形缩放方向可以为中心缩放,左上角缩放,右上角缩放,左下角缩放,右下角缩放Bitmap中心缩放,包含了缩放和平移两个操作&#xf…

Java进阶学习笔记32——Calendar

为什么要学习Calendar? 原来的方法: 使用Calendar 从API文档中,可以看到Calendar是一个抽象类,抽象类是不能创建对象,不能直接使用的。 package cn.ensource.d3_time;import java.util.Calendar; import java.util.Da…

基于Raspi的Opencv-Python开发笔记

本文所有未强调 “windows终端” 的 “终端”字眼,都是默认树莓派的终端 系统版本 系统版本有必要强调一下,因为不同版本很多操作需要修改 在终端输入uname -a Release就是版本号,Codename是版本名 以下操作仅在此版本验证可行 使能摄像…

传感器和变送器的区别介绍

从它的名称来看,传与感二字。传是指传输,感是指感知。实际上是先有感知,其次转换,最后传输。因此传输是目的,转换是手段,感知是基础。把能够将被测变量(温度、压力、液位、流量)感知…

内存管理【C++】

内存分布 C中的内存区域主要有以下5种 栈(堆栈):存放非静态局部变量/函数参数/函数返回值等等,栈是向下增长的【地址越高越先被使用】。栈区内存的开辟和销毁由系统自动执行 堆:用于程序运行时动态内存分配&#xff…

C++入门3——类与对象2(类的6个默认成员函数)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 构造函数的概念 2.2 构造函数的特性 3. 析构函数 3.1 析构函数的概念 3.2 析构函数的特性 4.拷贝构造函数 4.1 拷贝构造函数的概念 4.2 拷贝构造函数的特性 5.赋值运算符重载函数 5.1运算符重载函数 5.2 赋值运算符重…

docker一键部署EFK系统(elasticsearch filebeat kibana metricbeat es-head)

EFK日志系统搭建 EFK日志系统介绍功能需求搭建elasticsearch集群规划前提部署核对证书及权限 EFK日志系统介绍 Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于…