1.什么是JDBC,使用JDBC的好处?
JDBC:
JDBC 规范定义接口,具体的实现由各大数据库厂商来实现。 JDBC 是 Java 访问数据库的标准规范,真正怎么操作数据库还需要具体的实现类,也就是数据库驱动。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动。所以我们只需要会调用 JDBC 接口中的方法即可,数据库驱动由数据库厂商提供。 使用 JDBC 的好处: 1) 程序员如果要开发访问数据库的程序,只需要会调用 JDBC 接口中的方法即可,不用关注类是如何实现的。 2) 使用同一套 Java 代码,进行少量的修改就可以访问其他 JDBC 支持的数据库。
2.我们导入的 mysql-connector-java-5.1.37-bin.jar包,有什么用,他和JDBC有什么关系?
因为JAVA提供的JAR包内容是有限的,JAVA是开源编码,很多优秀的框架,方法都可以由第3方提供。比如数据库有很多种,那么就有很多中java操作数据库语言,但如果有人事先做好,并生成了相应JAR包,你只要在你的代码里引入,并且按之前开发的人的要求对其初始化,那么就直接能用了,你自己一行算法代码,展现代码可能都不用写。简单来说就是引用别人的东西
该包是mysql公司按照JDBC的标准规范的实现类,也就是数据库驱动
3.注册驱动为什么使用反射的方式,而不是像以前一样,我们new对象?使用反射又有什么好处?
JDBC提供的DriverManager类用于跟踪所有可用的JDBC驱动,并在用户需要时选择合适的驱动提供给用户,但是其跟踪不是自动的,必须由可用的JDBC驱动的Driver类自己在DriverManager上进行注册,但是这个注册过程一般是由Driver类加载的时候自动完成的 Class.forName("数据库全类名驱动");这句就是为了加载这个类进入内存用的。而在一个类加载入内存的时候,类中的静态初始化过程会执行。而刚才所说的Driver类在DriverManager上注册的过程,事实上就是在这个静态初始化块中完成的,也就是说Class.forName(“数据库全类名驱动”");这句话在这里的用处就是,强制JVM将,数据库.Driver这个类加载入内存,以便将其注册到DriverManager类上去。 好处:因为反射是运行时根据全类名动态生成的Class对象,完全可以把这个全类名写在xml或者properties中去,不仅从代码上解耦和,而且需要更换数据库时,不需要进行代码的重新编译,这比直接new一个com.mysql.jdbc.Driver 不知高明到哪里去了。
4.请简述JDBC编程的步骤
1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar 2. 注册驱动 3. 获取数据库连接对象 Connection 4. 定义sql 5. 获取执行sql语句的对象 Statement 6. 执行sql,接受返回结果 7. 处理结果 8. 释放资源
5.JdbcUtils存在的目的?
如果一个功能经常要用到,把这个功能做成一个工具类,可以在不同的地方重用,提高代码的复用率,降低代码的冗余,提高编程效率。
6.什么是SQL注入问题,该怎样解决?
SQL 注入问题:用户输入的密码和 SQL 语句进行字符串拼接。用户输入的内容作为了 SQL 语句语法的一部分,改变了原有SQL真正的意义。
使用PreparedSatement接口。 |