Java基础知识(Java数据库操作)

java数据库操作

11.1 如何通过JDBC访问数据库

通过JDBC访问数据库一般有如下几个步骤:
1.加载JDBC数据库驱动器,将数据库的JDBC驱动加载到classpath中,一般将JDBC驱动复制在web-inf.lib下。
2.加载JDBC驱动,并将其注册到DriverManager中。一般使用反射class.forName(String driveName)
3.建立数据库连接,取得Connection对象,通过DriverManager.getConnection(url,username,password)实现,url为连接数据库的字符串,username为数据库的用户名,password为数据库密码。
4.建立Statement对象或PreparedStatement对象
5.执行SQL语句
6.访问结果集ResultSet对象
7.一次将Result、Statement、PreparedStatement、Connection对象关闭,释放所占用资源。
在这里插入图片描述

11.2 JDBC处理事务采用什么方法

一个事务是由一条或多条对数据库操作的SQL语句所组成的一个不可分割的工作单元,只有当事务中的所有操作都正常执行完后,整个事务才会被提交到数据库。
在JDBC中通过commit方法或rollback方法结束事务的操作。commit是对事务的提交,rollback是完成对事务的回滚。一般是将事务进行自动调用commit方法,否则调用rollback方法。
JDBC有哪些事务隔离级别:
1.transaction_nonejdb,不支持事务
2.transaction_read_uncommitted,未提交读,在提交前一个事务可以看到另一个事务的变化。允许读脏数据、不可重复读、虚读。
3.transaction_read_committed,已提交读。读取未提交的数据是是不允许的。
4.trainsaction_repeatable_read,可重复读。事务保证再次读取相同的数据。
5.trainsaction_serializable,可序列化,防止读脏数据,不可重复读和虚读。
读脏数据:一个事务读取了另一个事务未提交的数据。
不可重复读:一个事务的操作导致另一个事务前后两次读取到不同的数据。
虚读:一个事务的操作导致另一个事务前后两次查询的结果数据量不同。

11.3 Class.forName的作用

将类加载到JVM中,会返回一个与带有给定字符串名的类或接口相关的Class对象,并且JVM会加载该类,JVM执行该类的静态代码块。
JDBC要求Driver类在使用前必须向DriverManager注册,因此当执行Class.foName(“com.mysql,jdbc.Driver”)时,JVM会加载名字为“com.mysql.jdbc.Driver”对应的Driver类。com.mysql.jdbc.Driver类如下:
在这里插入图片描述

11.4 Statement、PreparedStatement、CallableStatement的区别

1.Statement用于执行不带参数的简单SQL语句,返回所生成结果的对象,每次执行SQL语句时,数据库都要编译该SQL语句。
在这里插入图片描述
2.PreparedStatement表示预编译的SQL语句对象,用于执行带参数的预编译SQL语句。
PreparedStatement比Statement好的点:

  • 效率高:使用PreparedStatement对象执行SQL命令时,命令会被数据库进行编译解析,并放到命令缓存区。
  • 代码可读性和可维护性更好
  • 安全性更好:可防止SQL语句注入攻击。SQL注入是通过把SQL命令插入到web标单递交或输入域名或页面请求的查询字符串,达到欺骗服务器,执行恶意SQL命令的目的。

3.CallableStatement提供用来调用数据库存储过程的接口,如果有输出参数要注册,说明是输出参数。

11.5 getString方法和getObject方法的区别

getString或getInt方法在调用时,程序会一次性将数据都放在内存中,然后通过调用ResultSet的next和getString方法获得数据。当数据量达到内存放不下时抛出异常。getObject方法不会出现这种问题,数据不会一次性被读到内存中,每次调用时会直接从数据库中去获取数据。

11.6 使用JDBC时需要注意的问题

使用JDBC时,需要建立与数据库的连接,才能完成对数据库的访问,由于与数据库的连接是非常重要的资源。JDBC连接池提供JDBC连接定义和数目有限的连接,如果连接数量不够,需要长时间等待。不正常关闭JDBC连接会导致等待回收无效的JDBC连接。正常关闭和释放JDBC连接,JDBC资源才能被快速重用。
在使用JDBC时,createStatement和PrepareStatement最好放在循环外面,在使用Statement后,需要及时关闭。在执行一次executeQuery等之后,如果不需要使用ResultSet数据,就将Statement关闭。在每次执行conn.createStatement都是在数据库中打开一个cursor(游标),如果将方法调用放在循环内,则不停地打开cursor。

11.7 什么是JDO

java数据对象,用来存取某种数据仓库中的对象标准化API,能够间接访问数据库。

11.8 JDBC与Hibernate的区别

Hibernate是JDBC的封装,使用配置文件将数据库的连接参数写到XML文件中,对数据库的访问还是JDBC完成。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值