大家好,我是贺贺,专注于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连接到数据库相关推荐

  1. java连接Orcale数据库并查询、插入、删除数据

    java连接Orcale数据库并查询.插入.删除数据 oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式 oci是一种胖客户端的连接方式 J ...

  2. java linux mysql数据库_Linux Java连接MySQL数据库

    Linux(Ubuntu平台)Java通过JDBC连接MySQL数据库,与Windows平台类似,步骤如下: 解压 jdbc: tar -zxvf mysql-connector-java-5.1.1 ...

  3. 【Java】Java连接Mysql数据库的demo示例

    [Java]Java连接Mysql数据库的demo示例 1.安装mysql数据库 2.下载java-mysql-connector.jar包 3.完成java配置 4.写java代码运行测试 1.安装 ...

  4. Java连接mysql数据库的方式,java连接mysql数据库的方式(4句语句)

    1 加载mysql驱动: class.forName("con.mysql.jdbc.Driver").newInstance(); 2 根据数据库路径url,账号,密码进行数据库 ...

  5. java中oracle.链接,java连接Oracle数据库的方法解析

    本文主要对java连接Oracle数据库方法进行步骤解析,具有很好的参考价值,需要的朋友一起来看下吧 Oracle数据库先创建一个表和添加一些数据 1.先在Oracle数据库中创建一个student表 ...

  6. Java连接Mysql数据库增删改查实现

    Java连接Mysql数据库增删改查实现 时间比较赶,我这里只实现查询,有时间再添加另外两个 难度 : ⭐⭐⭐(全星5颗星的情况下) 新建一个动态的网站工程, 把jar包全部复制进去,主要要那个mys ...

  7. scala 连接oracle_一分钟教你学会用java连接Oracle数据库

    package java_jdbc; //java连接Oracle数据库 import java.sql.Connection; import java.sql.DriverManager; impo ...

  8. java 数据库连接实例,Java连接各种数据库的实例

    Java连接各种数据库的实例 1.Oracle8/8i/9i数据库(thin模式) 以下为引用的内容: Class.forName("oracle.jdbc.driver.OracleDri ...

  9. java连接数据库 oracle,Oracle数据库之一分钟教你学会用java连接Oracle数据库

    本文主要向大家介绍了Oracle数据库之一分钟教你学会用java连接Oracle数据库,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. package java_jdbc; // ...

最新文章

  1. Spring @Value注解无法正确赋值问题
  2. css知识笔记(四)——代码简写、颜色值、长度值
  3. 每日一题(易错):哪些REPEAT_INTERVAL参数能够实现每30分钟运行job
  4. Google发布中文名称“谷歌”
  5. 流放者柯南rust_《流放者柯南》玩法前瞻 奴隶助你生活奔小康
  6. 简单网页设计模板html代码
  7. js 调用jsp java代码_如何在 js 代码中使用 jsp 标签或 Java 代码
  8. Android 中 RecyclerView 的基本使用
  9. 操作系统实验一 进程管理
  10. 冰冻效果Shader案例
  11. 《攻城Online》快速原型:服务端设计
  12. 要实现一台电脑可以上公司内网也可以访问外网
  13. 丢手帕问题 java_初学java丢手帕问题
  14. 关于Precision, Accuracy, F1, Micro-Ave, Macro-Ave
  15. 29 Linux 防火墙
  16. 【空心杯四旋翼TinyLeaf】传感器入门
  17. 苹果xr邮件无法连接服务器,iPhone XR无法连接到APP Store怎么办?苹果应用商店打不开解决方...
  18. 计算语言学概论复习笔记(分词、语言模型、隐马尔科夫、POS、ML、DL、MT)
  19. The Git repository at the following path is in the detached HEAD state
  20. 秦始皇陵上榜世界十大绝密胜境

热门文章

  1. RTP/RTCP协议详解
  2. [Maven问题总结]Maven+Tomcat7
  3. java下载远程文件到本地
  4. 带下划线的二级域名IE无法读取session
  5. COGS——T 803. [USACO Hol10] 政党 || 1776: [Usaco2010 Hol]cowpol 奶牛政坛
  6. CALayer的属性和使用
  7. thinkphp中join用法
  8. Codeforces Round #346 (Div. 2)
  9. python selenium --一些常用方法
  10. 将字符串转换为全角或半角