SSM社区工具小牛软件之家

JDBC

2016-11-02  本文已影响415人  慕凌峰

一、JDBC简介

</br>

1、JDBC基础

</br>

JDBC提供了连接不同数据库的实现

四两类都是纯Java的驱动程序,因此,对于Java开发者来说,它们在性能、可移植性、功能等方面都有优势。

JDBC-ODBC 部分本地API JDBC网络纯Java驱动程序 本地协议的纯 Java 驱动程序 JDBC API

二、JDBC应用

</br>

1、Driver接口

对于 Oracle 数据库连接,采用如下形式:
jdbc:oracle:thin:@localhost:1521:sid
对于 SQLServer 数据库连接,采用如下形式:
jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=sid
对于 MYSQL 数据库连接,采用如下形式:
jdbc:mysql://localhost:3306/sid

数据库连接被用于向数据库服务器发送命令和 SQL 语句,在连接建立后,需要对数据库进行访问,执行 sql 语句
在 java.sql 包中有 3 个接口分别定义了对数据库的调用的不同方式:
-Statement
-PrepatedStatement
-CallableStatement

1、Statement

ResultSet excuteQuery(String sql)
int excuteUpdate(String sql)

2、ResultSet

boolean next()
getString()

3、数据类型转换

数据类型转换

** 小结**

java.sql.DriverManager用来装载驱动程序,获取数据库连接。

java.sql.Connection完成对某一指定数据库的联接
java.sql.Statement在一个给定的连接中作为SQL执行声明的容器,他包含了两个重要的子类型。
Java.sql.PreparedSatement 用于执行预编译的sql声明
Java.sql.CallableStatement用于执行数据库中存储过程的调用
java.sql.ResultSet对于给定声明取得结果的途径

三、JDBC深入

</br>

1、SQL注入攻击

2、PreparedStatement

  • PreparedStatement 能最大可能提高性能:
    DBServer会对预编译语句提供性能优化。因为预编译语句有可能被重复调用,所以语句在被DBServer的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中就会得到执行。
  • 在statement语句中,即使是相同操作但因为数据内容不一样,所以整个语句本身不能匹配,没有缓存语句的意义.事实是没有数据库会对普通语句编译后的执行代码缓存.这样每执行一次都要对传入的语句编译一次。
    (语法检查,语义检查,翻译成二进制命令,缓存)
  • PreparedStatement 可以防止 SQL 注入 。

</br>

3、使用JDBC驱动程序处理元数据

4、DateBaseMetaDate

</br>

5、ResultMetaDate

用例

Connection conn = JdbcUtil.getConnection();

String sql = "insert into user(name,password,email,birthday) values('abc','123','abc@sina.com','1978-08-08')";

PreparedStatement st = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS );

st.executeUpdate();

ResultSet rs = st.getGeneratedKeys();  //得到插入行的主键

if(rs.next()){
    System.out.println(rs.getObject(1));
}

</br>

6、数据库事务

</br>

7、JDBC事务处理

</br>

8、数据库的隔离级别

数据库的四种隔离级别
  • Oracle 支持的 2 种事务隔离级别:READ COMMITED, SERIALIZABLE. Oracle 默认的事务隔离级别为: READ COMMITED
上一篇 下一篇

猜你喜欢

热点阅读