A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.什么是JDBC,使用JDBC的好处?
2.我们导入的 mysql-connector-java-5.1.37-bin.jar包,有什么用,他和JDBC有什么关系?
3.注册驱动为什么使用反射的方式,而不是像以前一样,我们new对象?使用反射又有什么好处?
4.请简述JDBC编程的步骤
5.JdbcUtils存在的目的?
6.什么是SQL注入问题,该怎样解决?

3 个回复

倒序浏览
1.什么是JDBC,使用JDBC的好处?
(1)JDBC是javaAPI提供的一套连接关系型数据库的规则,主要由接口组成;
(2)JDBC规范了数据库的连接规则,不同的数据库使用java连接都必须使用这一套规则,规则的实现则由数据库厂商提供,这样保证程序的统一性;
2.我们导入的 mysql-connector-java-5.1.37-bin.jar包,有什么用,他和JDBC有什么关系?
(1)这个jar包是数据库厂商针对JDBC接口写的实现类,它实现了java程序和数据库进行连接的具体代码。
3.注册驱动为什么使用反射的方式,而不是像以前一样,我们new对象?使用反射又有什么好处?
(1)使用反射可以不修改程序,修改注册驱动类,以适应不同的数据库:使用反射可以通过通过类路径获取指定的数据库连接对象,而类路径可以是一个变量,通过参数传递或则读取配置文件获取,这样可以灵活指定需要创建的数据库连接对象;
(2)反射的好处就是可以指定需要加载的类对象,并且可以获取类中的所有成员;
4.请简述JDBC编程的步骤
(1)工程中添加数据库连接的jar包
(2)注册驱动
(3)获取连接对象
(4)编写sql语句
(5)获取语句执行对象
(6)对获取的数据操作
(7)关闭资源
5.JdbcUtils存在的目的?
(1)JDBCUtils将连接数据库的的固定的代码提取出来,形成一个工具类,通过工具类连接获取数据库连接,简化代码,提高了代码的复用性
6.什么是SQL注入问题,该怎样解决?
(1)SQL注入是静态sql语句直接进行语句字符串拼接的时候,拼接的字符串中包含特殊关键字,造成语句的安全问题,例如
select * from user where username = 'fhdsjkf' and password = '',在password参数拼接a' or 'a' = 'a,会变成
select * from user where username = 'fhdsjkf' and password = 'a' or 'a' = 'a',使where条件恒成立,从而造成安全问题;
(2)解决的方法是使用Statement执行类的子类PreparedStatement,该类的执行方法传入的sql语句中可变的部分用占位符?代替,获取PreparedStatement
对象的时候就把sql语句传入进行预编译,然后再设置可变参数,从而保证不会出现安全问题。

点评

11  发表于 2018-11-21 20:03
回复 使用道具 举报
1.什么是JDBC,使用JDBC的好处?
(1)JDBC 是sun公司定义的一套关系型数据库规范(接口),数据库厂商都必须遵循这套规范并提供jar包,真正处理驱动数据库的是jar包的实现类.
(2)好处: 可以通过jar包去使用各种数据库
2.我们导入的 mysql-connector-java-5.1.37-bin.jar包,有什么用,他和JDBC有什么关系?
(1)可以通过这个jar包操作数据库,存储查询;
(2)此jar包遵循了JDBC的规范.
3.注册驱动为什么使用反射的方式,而不是像以前一样,我们new对象?使用反射又有什么好处?
(1)反射可以直接通过驱动路径加载进入内存,可以通过变量和配置文件的方式进行后续的代码修改操作
(2)好处: 降低了代码的耦合度
4.请简述JDBC编程的步骤
(1)在项目中添加对应数据库的jar包
(2)注册驱动(Class.forname(com.jdbc.mysql.Driver))
(3)获取数据库驱动连接管理 DriverManager.getConnection()
(4)定义sql语句
(5)获取数据库执行对象 createStatement/prepareStatement
(6)执行sql语句 executeUpdate(修改DML)/executeQuery(查询 DQL)
(7)释放资源
5.JdbcUtils存在的目的?
(1)简化冗余的代码
(2)可以联合配置文件进行热更新
(3)提高代码的复用性
6.什么是SQL注入问题,该怎样解决?
(1)通过恒等式,让sql判断条件为true,导致SQL注入问题
(2)使用PreparedStatement对象,预编译是用?作为占位符
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马