JDBC

来源:互联网 发布:手机淘宝装修店招 编辑:程序博客网 时间:2024/05/17 03:32

JDBC

-----

☆概述:Java DateBase Connectivity是一种用于执行SQL语句的java API,它由一组用Java语言编写的类和接口组成。通过这些类和接口,JDBC把SQL语句发送给不同类型的数据库进行处理并接受处理结果。



☆JDBC:JDBC是java连接数据库的一套规范,该规范中定义了一系列的接口,由数据库厂商提供接口实现类,由开发者根据接口,调用实现类的放大,这样开发者就可以屏蔽不同数据库的差异,无论连接什么数据库,对数据库做什么样的操作,有是一套API。



☆JDBC操作步骤:加载驱动,建立连接→执行SQL语句→关闭连接(和流操作的步骤大致相同)。


☆dao模式:建立实体类和数据库表做映射,也就是哪个表对应哪个类,哪个属性对应哪个列。而jdbc操作的目的就是完成对象数据和关系数据的转换。


☆常见的异常:

1)、java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver.class类没有找到的异常。

2)、java.sql.SQLException:Access denied for user 'root'@ 'localhost' (using password : YES) MySql

的登录密码错误。

3)、com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL

syntax: 表示SQL语句写错了。

4)、java.sql.SQLException: NO value specified for parameter 3 占位符和设置的值不匹配。

5)、增、删、改必须更新数据库,否则很可能写不禁数据。


☆Statement 和 PreparedStatement的区别:

1)、Statement 是 PreparedStatement的父接口类

2)、Statement在执行SQL语句,只能以拼接字串的方式设置值。由于每次值都不一样,所以在执行SQL语

句时,都会将SQL语句重新编译,效率较低。PreparedStatement提供占位符方式设置值,SQL语句不

用每次执行都要进行编译,执行效率较高。

3)、Statement在执行SQL语句时,由于采用拼字符串方式设置值,所以容易造成SQL注入,而

PreparedStatement使用占位符方式设置值,无论是什么值都当字符串处理。不会造成SQL注入。


☆SQL注入:在执行SQL语句时,如果以品滋福串的方式设置值,那么如果在值中SQL语句的关键字或非法字

符,可能会造成执行结果不正确或执行失败的情况。这就叫SQL注入。

☆三层架构:持久层、业务层、表现层

1)、持久层:完成数据库相关操作。采用DAO模式,建立实体类和数据库进行映射。也就是哪个类对应哪

个表,哪个属性对应哪个列。而持久层的目的就是完成关系数据和对象数据的转换。

2)、业务层:完成业务处理。采用事务脚本模式。将一个业务中所有的业务操作封装成一个方法。保证该

方法中所有的数据库更新操作同时成功,或者同时失败。

3)、表现层:完成数据的展示。采用MVC模式。

M:模型。也就是实体类。完成数据的封装和数据的传输。

V:试图。也就是GUI窗体。完成数据的展示。

C:控制。也就是事件。完成业务方法的调用和业务流程控制。

☆层与层之间,采用接口作耦合,这样,当其中一个层的组件发生更改或者替换时,不会影响别的层组件的使

用。


0 0