使用JDBC把Java连接到数据库
大家好,我是贺贺,专注于Java后端、数据结构和算法的学习。
为什么JDBC慢慢变陌生了
在Java开发过程中,与数据库打交道是难免的,但是,Java具体是怎么操作数据库的呢,随着Spring时代的来临,我们大部分的程序员可能只需要引入一个依赖,简单写几句配置文件,通过MyBatis等其他框架就可以操作数据库了。慢慢的我们好像对这个最有功的人JDBC陌生了,我记得刚开始学Java的时候,感觉JDBC真的太神奇了,竟然可以通过Java操作数据库。直到后来,有人问我还记得怎么创建Connection对象吗,我忽然一下子好像意识到,我在前进的过程中,好像丢掉了一些东西。
我眼中的王者JDBC
第一个Java项目是在大学做的,好像是大二暑假,那会自学Java,做了一个图书管理系统,当时要用数据库,我记得自己学过Oracle,但是听说写Java项目要用MySQL,所以就跟风用MySQL,不管是哪个数据库,大家都在说JDBC,后来才知道,JDBC既可以连接Oracle又可以连接MySQL,他就像一个中介一样。当我们要连接MySQL的时候,我们只需要用JDBC-MySQL的驱动就行了。我有时会想,世界上这么多数据库,Java怎么能一个个都去适配呢,后来发现,不是Java适配数据库,而是数据库来适配的Java,例如MySQL的驱动就是MySQL官网下载的,这也侧面看出Java的生态,同时也能让我们联想到,丰富自己比迎合别人更重要。
旧事重提,再会JDBC
现在让我凭空想象原生的Java怎么操作数据库,我都不敢保证我能写出来,下面这些内容呢,也是我参考了一些书籍,然后自己总结而来的,一句话形容自己,记性不好 忘性不差。
连接数据库
在开工之前,先去MySQL官网下载驱动,下载完之后,别忘了引入到项目中,当准备工作做完之后,就可以进行连接了。
操作数据库
连接完成之后,我们就可以对数据库进行增删改查了,那么问题来了,我们怎么去操作数据库呢,换句话说就是,我们用什么来操作数据库呢,平时我们都是直接写SQL语句的,现在Java里面怎么写SQL呢,这个问题当然不用我们操心了,官方给了我们一个接口,这个接口,可以执行SQL语句,堪称完美。这个接口就是Statement接口。
如果我们要进行查询操作,那查询的结果放到哪呢,不用担心,官方也给我们准备好了,是一个ResultSet接口,我们直接用它来接收就可以了。
经过这么一波操作,我们就成功的把数据库里的东西,查询出来,并放到Java对象中了,其实这是一个很复杂的操作,但是大部分都是Java官方给做了,所以我们看到的就是简单的使用,随着框架的诞生,我们程序员就更懒了,只需要专注于写SQL了,这些连接操作等都不用了,这样一来,开发效率是高了,好像也就开发效率高了,我们慢慢的都变水了,反正我是这样。补充:如果想要进行复杂的操作,其实本质上就是对你SQL的考察了,这里就不一一演示了。
升级版操作
我们应该还有印象,或者面试中偶尔会遇到,其实对数据库的操作,官方还给了一个接口,它就是PreparedStatement,这玩意呢,比Statement多了一个预处理。简单的说就是,该对象在向数据库发送SQL语句的时候,会做一个预处理,通过这个预处理,来减轻数据库的访问压力,这里的预处理是什么呢,首先我们需要知道数据库在执行SQL时,数据库的解释器会对SQL进行解释成数据库可以直接执行的命令,因为我们写的SQL语句其实可以简单的理解为是高级语言,而数据库本身是不能直接识别的,需要通过解释器解释之后才能识别。而这里Java提供的预处理就是做了这个解释的操作,这样一来就减轻了数据库的压力。为什么要减轻数据库的压力呢,把预处理放到Java层面,难道就不用时间了吗?当然要时间,但是这个时间是在编译的时候做的,也就是只要编译好了PreparedStatement对象,那么它就把SQL给解释成数据库可以直接执行的格式了,所以就减轻了数据库的压力,从而提高了效率。
另一方面,PreparedStatement可以防止SQL注入,因为Statement在执行的时候是一个字符串,而这个字符串可能会被恶意在后面的where语句里拼接一个or 1=1
,这样就会导致SQL语句永真,而产生错误。如果通过预处理的方式,它的执行不是一整个字符串,而是进行set的操作,就避免了恶意拼接字符串。
到目前为止呢,我们基本了解了,如何通过Java来操作数据库,其实呢,随着科技的发展,我们拥有了更多的花里胡哨,但是最初的东西,好像慢慢的离我们而去,可是我们不要忘记了,框架可以说,我们是学不完的,在我们埋头学习框架的时候,记得温习一直默默做出贡献的基础知识。
小安的故事
小安在大一加入了学生会——外联部,然后还加入了一个社团——ACM,他其实更喜欢外联部,因为在那里无忧无虑的,但是他却每天泡在ACM,可能这就是现实吧,小安在无聊的时候喜欢一个人去操作玩,他喜欢去听操场上别的社团在唱歌,他也喜欢街舞社团,可是他都没有加入。有一次,小安走到了街舞社团的门口,站了好久,最终还是没有进去。他不开心的时候就在宿舍里,带着耳机,自己唱歌,还好他的室友都能很好,能受得了他,要不然早把这个不合群的臭小子赶出去了。
使用JDBC把Java连接到数据库相关推荐
- java连接Orcale数据库并查询、插入、删除数据
java连接Orcale数据库并查询.插入.删除数据 oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式 oci是一种胖客户端的连接方式 J ...
- java linux mysql数据库_Linux Java连接MySQL数据库
Linux(Ubuntu平台)Java通过JDBC连接MySQL数据库,与Windows平台类似,步骤如下: 解压 jdbc: tar -zxvf mysql-connector-java-5.1.1 ...
- 【Java】Java连接Mysql数据库的demo示例
[Java]Java连接Mysql数据库的demo示例 1.安装mysql数据库 2.下载java-mysql-connector.jar包 3.完成java配置 4.写java代码运行测试 1.安装 ...
- Java连接mysql数据库的方式,java连接mysql数据库的方式(4句语句)
1 加载mysql驱动: class.forName("con.mysql.jdbc.Driver").newInstance(); 2 根据数据库路径url,账号,密码进行数据库 ...
- java中oracle.链接,java连接Oracle数据库的方法解析
本文主要对java连接Oracle数据库方法进行步骤解析,具有很好的参考价值,需要的朋友一起来看下吧 Oracle数据库先创建一个表和添加一些数据 1.先在Oracle数据库中创建一个student表 ...
- Java连接Mysql数据库增删改查实现
Java连接Mysql数据库增删改查实现 时间比较赶,我这里只实现查询,有时间再添加另外两个 难度 : ⭐⭐⭐(全星5颗星的情况下) 新建一个动态的网站工程, 把jar包全部复制进去,主要要那个mys ...
- scala 连接oracle_一分钟教你学会用java连接Oracle数据库
package java_jdbc; //java连接Oracle数据库 import java.sql.Connection; import java.sql.DriverManager; impo ...
- java 数据库连接实例,Java连接各种数据库的实例
Java连接各种数据库的实例 1.Oracle8/8i/9i数据库(thin模式) 以下为引用的内容: Class.forName("oracle.jdbc.driver.OracleDri ...
- java连接数据库 oracle,Oracle数据库之一分钟教你学会用java连接Oracle数据库
本文主要向大家介绍了Oracle数据库之一分钟教你学会用java连接Oracle数据库,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. package java_jdbc; // ...
最新文章
- Spring @Value注解无法正确赋值问题
- css知识笔记(四)——代码简写、颜色值、长度值
- 每日一题(易错):哪些REPEAT_INTERVAL参数能够实现每30分钟运行job
- Google发布中文名称“谷歌”
- 流放者柯南rust_《流放者柯南》玩法前瞻 奴隶助你生活奔小康
- 简单网页设计模板html代码
- js 调用jsp java代码_如何在 js 代码中使用 jsp 标签或 Java 代码
- Android 中 RecyclerView 的基本使用
- 操作系统实验一 进程管理
- 冰冻效果Shader案例
- 《攻城Online》快速原型:服务端设计
- 要实现一台电脑可以上公司内网也可以访问外网
- 丢手帕问题 java_初学java丢手帕问题
- 关于Precision, Accuracy, F1, Micro-Ave, Macro-Ave
- 29 Linux 防火墙
- 【空心杯四旋翼TinyLeaf】传感器入门
- 苹果xr邮件无法连接服务器,iPhone XR无法连接到APP Store怎么办?苹果应用商店打不开解决方...
- 计算语言学概论复习笔记(分词、语言模型、隐马尔科夫、POS、ML、DL、MT)
- The Git repository at the following path is in the detached HEAD state
- 秦始皇陵上榜世界十大绝密胜境
热门文章
- RTP/RTCP协议详解
- [Maven问题总结]Maven+Tomcat7
- java下载远程文件到本地
- 带下划线的二级域名IE无法读取session
- COGS——T 803. [USACO Hol10] 政党 || 1776: [Usaco2010 Hol]cowpol 奶牛政坛
- CALayer的属性和使用
- thinkphp中join用法
- Codeforces Round #346 (Div. 2)
- python selenium --一些常用方法
- 将字符串转换为全角或半角