JDBC题目

1.JDBC操作数据库的常见API的类和接口?

DriverManager:管理数据库驱动程序,用于建立数据库连接

Driver:提供给各个数据库厂商的接口,每一个数据库厂商要想可以使用java语言与他们的数据进行通信,必须实现此接口。(主要处理与数据库服务器之间的通信)

Connection:此接口用于联系数据库中的方法

Statement:从此接口创建的对象将sql语句提交到数据库

ResutlSet:在使用Statement对象执行SQL查询后,这个对象保存从数据库检索的数据

SQLEception:处理数据库应用程序中发生的异常

2.JDBC操作数据库的步骤?

1.导包

2.加载驱动

3.创建连接

4.创建Statement对象

5.写sql

6.执行sql

7.关闭资源


3.JDBC解决中文乱码的方式是什么?

在创建连接的时候拼接在url后后面,用?characterEncoding=utf-8来定编码格式


4.什么是数据库事务

事务是逻辑上的一组操作,要么一个成功,要么一个失败就全部失败

5.Statement和prepareStatement优缺点

1、PreparedStatement可读性更高,维护性更强(Statement需要动态拼接);

2、PreparedStatement在被编译后会被缓存下来,下次调用相同的预编译语句时不需要重新编译,只需传入对应参数就行;而对于Statement来说,及时insert into tb_name values(1,"11")、insert into tb_name values(1,"12"),由于插入的数据不同,需要重新编译语句;

3、Statement有可能会有sql注入风险:

一、PreparedStatement相比于Statement,有三bai个优点:

一)代码的可du读性和可维护性。

从代码来看,zhi用PreparedStatement来代替daoStatement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说,都比直接用Statement的代码高很多档次。

二)PreparedStatement尽最大可能提高性能。

每一种数据库都会尽最大努力对预编译语句提供最大的性能优化,因为预编译语句有可能被重复调用,所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个函数)就会得到执行。这并不是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配,那么在任何时候就可以不需要再次编译而可以直接执行。而statement的语句中,即使是相同一操作,而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配。比如:

insert into tb_name (col1,col2) values ('11','22');

insert into tb_name (col1,col2) values ('11','23');

即使是相同操作但因为数据内容不一样,所以整个个语句本身不能匹配,没有缓存语句的意义,事实是没有数据库会对普通语句编译后的执行代码缓存。

当然并不是所有预编译语句都一定会被缓存,数据库本身会用一种策略,比如使用频度等因素来决定什么时候不再缓存已有的预编译结果,以保存有更多的空间存储新的预编译语句。

用Statement对象时,每次执行一个SQL命令,都会对它进行解析编译,而PreparedStatement对象在多次执行同一个SQl语句时都只解析编译一次。PreparedStatement对象“就像一条生产线,批量生产同一型号的产品速度非常快。”这样便可极大地减少资源开销。

三)极大地提高了安全性。

传递给PreparedStatement对象的参数可以被强制进行类型转换,使开发人员可以确保在插入或查询数据时与底层的数据库格式匹配。

在公共Web站点环境下,有恶意的用户会利用那些设计不完善的、不能正确处理字符串的应用程序来个SQl注入,那就有麻烦。

你可能感兴趣的:(JDBC题目)