jdbc-程序员宅基地

技术标签: python  java  编程语言  jdbc  mysql  数据库  

一,什么是JDBC

JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。

在这里插入图片描述

二,JDBC的原理

早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务,因为各个厂商的数据库服务器差异太大了。后来SUN开始与数据库厂商们讨论,最终得出的结论是,由SUN提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协议标准,然后各个数据库厂商会遵循SUN的规范提供一套访问自己公司的数据库服务器的API出现。SUN提供的规范命名为JDBC,而各个厂商提供的,遵循了JDBC规范的,可以访问自己数据库的API被称之为驱动!

在这里插入图片描述

JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的!

三,程序员,JDBC,JDBC驱动的关系及说明

JDBC API

提供者:Sun公司

内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如

1.DriverManager类 作用:管理各种不同的JDBC驱动

2.Connection接口

3.Statement接口

4.ResultSet接口

JDBC 驱动

提供者:数据库厂商

作用:负责连接各种不同的数据库

Java程序员

     JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。

三方关系

SUN公司是规范制定者,制定了规范JDBC(连接数据库规范)

数据库厂商微软、甲骨文等分别提供实现JDBC接口的驱动jar包

程序员学习JDBC规范来应用这些jar包里的类。

在这里插入图片描述

四,JDBC的总结

简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。

在这里插入图片描述
DriverManager :依据数据库的不同,管理JDBC驱动

Connection :负责连接数据库并担任传送数据的任务

Statement :由 Connection 产生、负责发送执行SQL语句

ResultSet:负责保存Statement执行后所产生的查询结果

五,JDBC连接数据的步骤

1:加载一个Driver驱动

2:创建数据库连接(Connection)

3 : 创建SQL命令发送器Statement

4:通过Statement发送SQL命令并得到结果

5:处理SQL结果(select语句)

6:关闭数据库资源

ResultSet

Statement

Connection。

六,JDBC连接数据的详细步骤

1.加载驱动

加载JDBC驱动是通过调用方法java.lang.Class.forName(),下面列出常用的几种数据库驱动程序加载语句的形式 :

Class.forName(“oracle.JDBC.driver.OracleDriver”);//使用Oracle的JDBC驱动程序

Class.forName(“com.microsoft.JDBC.sqlserver.SQLServerDriver”);//使用SQL Server的JDBC驱动程序

Class.forName(“com.ibm.db2.JDBC.app.DB2Driver”);//使用DB2的JDBC驱动程序

Class.forName(“com.mysql.JDBC.Driver”);//使用MySql的JDBC驱动程序

2.创建数据库连接

与数据库建立连接的方法是调用DriverManager.getConnection(String url, String user, String password )方法

Connection conn=null;

String url=“jdbc:oracle:thin:@localhost:1521:orcl”;

String user=“scott";

String password=“tiger";

conn = DriverManager.getConnection(url, user, password);

3.创建Statement并发送命令

Statement对象用于将 SQL 语句发送到数据库中,或者理解为执行sql语句

有三种 Statement对象:

Statement:用于执行不带参数的简单SQL语句;

PreparedStatement(从 Statement 继承):用于执行带或不带参数的预编译SQL语句;

CallableStatement(从PreparedStatement 继承):用于执行数据库存储过程的调用。
在这里插入图片描述

4.处理ResultSet结果

ResultSet对象是executeQuery()方法的返回值,它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。

ResultSet里的数据一行一行排列,每行有多个字段,且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。

ResultSet对象自动维护指向当前数据行的游标。每调用一次next()方法,游标向下移动一行。

初始状态下记录指针指向第一条记录的前面,通过next()方法指向第一条记录。循环完毕后指向最后一条记录的后面。

在这里插入图片描述

5.关闭数据库资源

作为一种好的编程风格,应在不需要Statement对象和Connection对象时显式地关闭它们。关闭Statement对象和Connection对象的语法形式为:

public void close() throws SQLException

用户不必关闭ResultSet。当它的 Statement 关闭、重新执行或用于从多结果序列中获取下一个结果时,该ResultSet将被自动关闭。

注意:要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源,因为Statement和ResultSet是需要连接是才可以使用的,所以在使用结束之后有可能其他的Statement还需要连接,所以不能先关闭Connection。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43623447/article/details/106494077

智能推荐

2021-06-19 回文链表-程序员宅基地

文章浏览阅读72次。leetcode每日一题之回文链表题目链接:https://leetcode-cn.com/problems/palindrome-linked-list-lcci/submissions/题目描述:编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false 示例 2:输入: 1->2->2->1输出: true 解法1:自己的解法首先声明,本人的解法是通过了的。思想:首先遍历链表记录链表中的元素个数然后开辟一个数组,空间

java实现简单闹钟_java实现动态时钟并设置闹钟功能-程序员宅基地

文章浏览阅读2k次。本文实例为大家分享了java实现动态时钟设置闹钟功能,供大家参考,具体内容如下显示如上图所示的动态时钟,并且可以设置闹钟,播放mp3。首先用到的是时钟(Timer)和日历(Calendar)得到系统的当前时间。代码如下:import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.geom.Ellipse2D;import ..._java 动态闹钟

关于升级第三方组件报错 com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArc_com.android.builder.dexing.dexarchivebuildex index-程序员宅基地

文章浏览阅读700次。最近项目安全风险整改,目前项目里面使用的组件版本比较低,存在一些安全漏洞,需要升级第三方组件的版本。先贴一下我的报错,有三个组件的升级会涉及到这一类报错,区别是三个组件报错涉及的包名不一样,分别是 (1)Gson 升级到 2.8.6(2)OKhttp3 升级到 4.9.0(3)Rxjava 升级到 3.0.6百度上大多数的说法都是没有使用 java 8 导致的,于是我加上了这段配置compileOptions { sourceCompatibility JavaVers_com.android.builder.dexing.dexarchivebuildex index9 out of bounds

postgresql 替换空格 换行和回车_postgres空格转换-程序员宅基地

文章浏览阅读1.9k次。UPDATE table set name = trim(name);//用来删除数据前后的空格UPDATE table set name = rtrim(name);//用来删除数据前的空格UPDATE table set name = ltrim(name);//用来删除数据后的空格UPDATE table set name = REPLACE(name,' ','');//用来删除数据中的空格UPDATE table set name =REPLACE(name, CHR(10), ._postgres空格转换

[机器学习&数据挖掘]机器学习实战决策树plotTree函数完全解析_"args.plottree=list(ftype=\"i\",fsize=1)"-程序员宅基地

文章浏览阅读386次。[机器学习&数据挖掘]机器学习实战决策树plotTree函数完全解析http://www.cnblogs.com/fantasy01/p/4595902.html点击打开链接import matplotlib.pyplot as plt#这里是对绘制是图形属性的一些定义,可以不用管,主要是后面的算法decisionNode = dict(boxstyle="sawto_"args.plottree=list(ftype=\"i\",fsize=1)"

SpringBoot 项目报错 spring boot Configuration Annotation Proessor not found in classpath_springboot configuration annotation peocessor-程序员宅基地

文章浏览阅读811次。报错spring boot Configuration Annotation Proessor not found in classpath这是因为@ConfigurationProperties(prefix=”author”) 没有指定classpath时,IDEA提示没有找到classpath。而spring boot1.5以上版本@ConfigurationProperties..._springboot configuration annotation peocessor

随便推点

Kafka笔记二之Topic操作,文件参数配置_kafka topic 根据变量读取不同配置文件下主题-程序员宅基地

文章浏览阅读8k次。kafka中topic操作,文件参数配置_kafka topic 根据变量读取不同配置文件下主题

新加坡杭州科技园:绿色环保月签署零碳宣言-程序员宅基地

文章浏览阅读88次。 日前,新加坡杭州科技园在上海世博园零碳馆签署了《长三角地区海归创新创业零碳宣言》,并与共同签署零碳宣言的园区代表一起参加“第三届长三角海归创新创业圆桌会议——2010长三角零碳科技论坛”,共同探讨低碳科技园区建设的理念和方向。  “第三届长三角海归创新创业圆桌会议——2010长三角零碳科技论坛”的地点分别是上海世博会零碳馆和杭州经济技术开发区。选择这两个地方举行长三角零..._零碳宣言

Anaconda Python版本对应_anaconda对应python3.7-程序员宅基地

文章浏览阅读6.2k次,点赞7次,收藏26次。Anaconda Python版本对应Anaconda 2.0.1 对应 Python2.6Anaconda 2.0.1 对应 Python2.7Anaconda 2.0.1 对应 Python3.3Anaconda 2.0.1 对应 Python3.4Anaconda 2.1.0 对应 Python2.6Anaconda 2.1.0 对应 Python2.7Anaconda 2.1.0 对应 Python3.3Anaconda 2.1.0 对应 Python3.4Anaconda 2.2_anaconda对应python3.7

论文阅读《FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding》-程序员宅基地

文章浏览阅读3.3k次,点赞8次,收藏52次。提出了一种对比表征嵌入的方法来来实现小样本目标检测,动机是观察到使用不同的 IoU 来检测物体与对比学习方法中对比不同“正对”和“负对”来实现检测有异曲同工之妙。本文实验证明模型的错误更有可能是误分类而不是定位,文本解决这一问题的方法是对“正对”和“负对”施加了对比嵌入损失(CPE loss),使“正对”的得分远大于“负对”的得分,在当时的 PASCAL VOC 和 COCO 数据集上均达到了 SOTA。“正对”“负对”示例..._fsce

python在线评测系统_关于开源OJ_在线评测系统(Online Judge)设计与实现的研究与分析...-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏3次。标签:OJ是Online Judge系统的简称,用来在线检测程序源代码的正确性。著名的OJ有TYVJ、RQNOJ、URAL等。国内著名的题库有北京大学题库、浙江大学题库、电子科技大学题库、杭州电子科技大学等。国外的题库包括乌拉尔大学、瓦拉杜利德大学题库等。Online Judge系统最初使用于ACM-ICPC国际大学生程序设计竞赛和OI信息学奥林匹克竞赛中的自动判题和排名。现广泛应用于世界各地高校..._python oj文件评测

好程序员大数据学习路线hive内部函数-程序员宅基地

文章浏览阅读74次。好程序员大数据学习路线hive内部函数,持续为大家更新了大数据学习路线,希望对正在学习大数据的小伙伴有所帮助。1、取随机数函数:...