您现在的位置是:主页 > news > 重庆做网站建设公司排名/合肥建站公司seo

重庆做网站建设公司排名/合肥建站公司seo

admin2025/6/2 16:13:36news

简介重庆做网站建设公司排名,合肥建站公司seo,网站首页一般做多大,现在还有做网站的必要吗导论刚学数据库时,我们对数据库中的数据进行各种操作都是基于图形化界面的软件,通过这种软件,我们很方便的对数据库的数据进行CRUD。但是,对于一名软件工程师的我们,必然要知道如何使用程序与数据库打交道,…

重庆做网站建设公司排名,合肥建站公司seo,网站首页一般做多大,现在还有做网站的必要吗导论刚学数据库时,我们对数据库中的数据进行各种操作都是基于图形化界面的软件,通过这种软件,我们很方便的对数据库的数据进行CRUD。但是,对于一名软件工程师的我们,必然要知道如何使用程序与数据库打交道,…

导论

    刚学数据库时,我们对数据库中的数据进行各种操作都是基于图形化界面的软件,通过这种软件,我们很方便的对数据库的数据进行CRUD。但是,对于一名软件工程师的我们42fb06a0c5e37b2e51742d11d7619ae4.png,必然要知道如何使用程序与数据库打交道,也就是通过写代码对数据库中的数据进行操作。

    首先,我们要清楚,数据库是基于CS架构的,也就是通过客户端的请求,然后服务器对数据进行相关操作,在此之前当然需要先与服务器建立一个连接。

4538e56023e36c3a46ef44eaa6e19595.png

    常见的客户端软件,比如sqlyog,连接数据库服务器之后便可操作数据

ee52e0b5704edd4bc2ebd9b1e232a619.png

    我们用Java代码与DB Server进行通讯,通过socket连接服务器发送指令,但是有一个问题,你发送的请求,数据库服务器并不能识别。

ff3edd194c5db2e1d086ff915495d774.png

    解决办法:将我们命令转化为数据库服务器能识别的指令。

    这里不难想出,我们需要的正是一个“翻译官”,就比如,一个不会英语的中国人和一个不会中文的美国人,如何进行交流呢?肯定是通过翻译官...将所需要说的话传递给翻译官,然后翻译官转化后传达给对方,这样便可以进行交流。Java与数据库服务器的信息交流也是这样,将Java命令翻译为数据库服务器能够识别的指令。这个“翻译官”便是Driver,相当于“协议”,其实不难理解,Driver意为司机,司机的职责不就类似这样吗!

5e1abfef4bf5c481d8144b935dc59e8c.png

    因为每种数据库的的语法不尽相同,所以Sun公司提供了一套规范,各个数据库厂商只需要去实现该规范,便可以对数据库进行操作。每种数据库厂商实现该规范的程序就是我们所说的“翻译官”,也称之为数据库驱动。

c60cafa69be15bb33569a57035bb0894.png

JDBC流程解析

    一个标准的JDBC代码

cf20e87592995ed00fdbcd26ee24567d.png

分析

  • 注册驱动

Class.forName("com.mysql.jdbc.Driver");

    由forName可以知道,该行代码是将Driver类加载到内存中,但是作用是什么呢?

    上面说到,我们连接数据库需要数据库驱动,但是驱动单独数没什么用的,我们需要将数据库驱动与我们的程序产生联系,有了这行代码,我们就能使用我们的驱动。

    查看Driver类的源码,我们一旦加载驱动进内存便会执行静态代码块中的内容

f1bd3135ed823eb6c9e278320c20d2ae.png

    点进去registerDriver方法

7cf69c2265f9b0139ab2960464120539.png

    再进去,会发现,会将驱动注册进入DriverManager中。

dbbf64ec0c4968764dbda19800668057.png

  • 获取连接

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db","root","root");

    上面的注册驱动,也是是将驱动与Java程序联系起来,也就是下面这条线

bc2fd654e1060c37cb62e7b986bb4391.png

    通过获取连接,便可以将驱动与数据库联系起来,下面这条线

7f716fda5df105a3fa1f0f3ac86b597e.png

源码分析

    进入getConnection方法

f461142fc1a5884ddb0fc7739feab3ca.png

    然后再进去,它对我们注册到DriverManager的Driver进行遍历,然后去连接数据库。

f381b5b641fd53cf884be89c24559f3b.png

  • 获取编译和发送SQL语句的对象

Statement stmt = connection.createStatement();

    这里也许会有一个疑问,不是说好是驱动Driver去翻译和发送SQL吗?

    这里要理解,在数据库厂商提供的驱动包中,并不是只有Driver这个类,这个类好比是一个入口,只要加载这个类,与其相关额类也会加载进内存。(就好比程序只有一个main方法)

在驱动包中,也可以Connection和Statment类,它们实现了Sun公司提供的Connection和Statment类。

     这样是不是就能理解为什么Statement对象也需要关闭了....

  • 通过Statement的方法指定编译SQL,并发送执行

stmt.executeQuery("select * from user ");

   通过以上说明,很容易就理解了这行代码的。

最后,祝各位中秋节快乐,别忘了点赞加关注哦!!!

5d75fc1aa8fb9c72d5b65c39a07224bc.png