您现在的位置是:主页 > news > 重庆做网站建设公司排名/合肥建站公司seo
重庆做网站建设公司排名/合肥建站公司seo
admin2025/6/2 16:13:36【news】
简介重庆做网站建设公司排名,合肥建站公司seo,网站首页一般做多大,现在还有做网站的必要吗导论刚学数据库时,我们对数据库中的数据进行各种操作都是基于图形化界面的软件,通过这种软件,我们很方便的对数据库的数据进行CRUD。但是,对于一名软件工程师的我们,必然要知道如何使用程序与数据库打交道,…
导论
刚学数据库时,我们对数据库中的数据进行各种操作都是基于图形化界面的软件,通过这种软件,我们很方便的对数据库的数据进行CRUD。但是,对于一名软件工程师的我们,必然要知道如何使用程序与数据库打交道,也就是通过写代码对数据库中的数据进行操作。
首先,我们要清楚,数据库是基于CS架构的,也就是通过客户端的请求,然后服务器对数据进行相关操作,在此之前当然需要先与服务器建立一个连接。
常见的客户端软件,比如sqlyog,连接数据库服务器之后便可操作数据
我们用Java代码与DB Server进行通讯,通过socket连接服务器发送指令,但是有一个问题,你发送的请求,数据库服务器并不能识别。
解决办法:将我们命令转化为数据库服务器能识别的指令。
这里不难想出,我们需要的正是一个“翻译官”,就比如,一个不会英语的中国人和一个不会中文的美国人,如何进行交流呢?肯定是通过翻译官...将所需要说的话传递给翻译官,然后翻译官转化后传达给对方,这样便可以进行交流。Java与数据库服务器的信息交流也是这样,将Java命令翻译为数据库服务器能够识别的指令。这个“翻译官”便是Driver,相当于“协议”,其实不难理解,Driver意为司机,司机的职责不就类似这样吗!
因为每种数据库的的语法不尽相同,所以Sun公司提供了一套规范,各个数据库厂商只需要去实现该规范,便可以对数据库进行操作。每种数据库厂商实现该规范的程序就是我们所说的“翻译官”,也称之为数据库驱动。
JDBC流程解析
一个标准的JDBC代码
分析
注册驱动
Class.forName("com.mysql.jdbc.Driver");
由forName可以知道,该行代码是将Driver类加载到内存中,但是作用是什么呢?
上面说到,我们连接数据库需要数据库驱动,但是驱动单独数没什么用的,我们需要将数据库驱动与我们的程序产生联系,有了这行代码,我们就能使用我们的驱动。
查看Driver类的源码,我们一旦加载驱动进内存便会执行静态代码块中的内容
点进去registerDriver方法
再进去,会发现,会将驱动注册进入DriverManager中。
获取连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db","root","root");
上面的注册驱动,也是是将驱动与Java程序联系起来,也就是下面这条线
通过获取连接,便可以将驱动与数据库联系起来,下面这条线
源码分析
进入getConnection方法
然后再进去,它对我们注册到DriverManager的Driver进行遍历,然后去连接数据库。
获取编译和发送SQL语句的对象
Statement stmt = connection.createStatement();
这里也许会有一个疑问,不是说好是驱动Driver去翻译和发送SQL吗?
这里要理解,在数据库厂商提供的驱动包中,并不是只有Driver这个类,这个类好比是一个入口,只要加载这个类,与其相关额类也会加载进内存。(就好比程序只有一个main方法)
在驱动包中,也可以Connection和Statment类,它们实现了Sun公司提供的Connection和Statment类。
这样是不是就能理解为什么Statement对象也需要关闭了....
通过Statement的方法指定编译SQL,并发送执行
stmt.executeQuery("select * from user ");
通过以上说明,很容易就理解了这行代码的。
最后,祝各位中秋节快乐,别忘了点赞加关注哦!!!