1、Java学习手册:Java基础知识点
2、Java学习手册:Java面向对象面试问题
3、Java学习手册:Java集合、泛型面试问题
4、Java学习手册:Java并发与多线程面试问题
5、Java学习手册:Java虚拟机面试问题
6、Java学习手册:Java IO面试问题
7、Java学习手册:Java反射机制面试问题
8、Java学习手册:Java网络编程面试问题
9、Java学习手册:Java异常面试问题
10、Java学习手册:Java设计模式面试问题
11、Java学习手册:Java数据库面试问题
一、如何通过JDBC访问数据库?
二、JDBC中Class.forName的作用是什么?
Java学习手册:JDBC中Class.forName的作用是什么?
三、JDBC中getString()方法与getObject()方法有什么区别?
Java学习手册:JDBC中getString()方法与getObject()方法有什么区别?
四、JDBC中Statement、PreparedStatement和CallableStatement的区别
Java学习手册:JDBC中Statement&PreparedStatement&CallableStatement
五、数据库原理
六、什么是SQL注入?如何防止SQL注入?
什么是SQL注⼊: 通过sql语句的拼接达到⽆参数查询数据库数据⽬的的⽅法。
如将要执⾏的sql语句为 select * from table where name = “+appName+”,利⽤appName参数值的输⼊,来⽣成恶意的sql语句。
因此可以采⽤PrepareStatement来避免Sql注⼊,在服务器端接收参数数据后,进⾏验证,此时PrepareStatement会⾃动检测,⽽Statement不⾏,需要⼿⼯检测。
使用PrepareStatement,可以防止sql注入攻击,sql的执行需要编译,注入问题之所以出现,是因为用户填写 sql语句参与了编译。使用PrepareStatement对象在执行sql语句时,会分为两步,第一步将sql语句 “运送” 到mysql上预编译,再回到java端拿到参数运送到mysql端。预先编译好,也就是SQL引擎会预先进行语法分析,产生语法树,生成执行计划,也就是说,后面你输入的参数,无论你输入的是什么,都不会影响该sql语句的语法结构了。用户填写的 sql语句,就不会参与编译,只会当做参数来看。从而避免了sql注入问题。
七、解释下驱动(Driver)在JDBC中的⻆⾊
JDBC驱动提供了特定⼚商对JDBC API接⼝类的实现,驱动必须要提供java.sql包下⾯这些类的实现:Connection, Statement, PreparedStatement,CallableStatement, ResultSet和Driver。