JDBC操作数据库详解
来源:互联网 发布:删除mac上的软件 编辑:程序博客网 时间:2024/06/05 03:03
1、JDBC概述
JDBC(java database connectivity),提供了一种与平台无关的用于执行SQL语句的标准API,可以很方便的实现多种关系型数据库的统一操作。
主要功能:
1) 与数据库建立连接
2)先数据库发送SQL语句
3)处理从数据库返回的结果
2、 JDBC中常用的类和接口
JDBC的接口和类都在java.sql包中
1)Connection 接口
代表与数据库的连接
常用方法:createStatement() 创建Statement对象
preparedStatement() 创建预处理 preparedStatement对象
commit() 提交事务,并且释放当前Connection对象持有的数据库锁
roolback() 回滚事务中所有更改,并且释放当前Connection对象持有的数据库锁
close() 立即释放Connection对象的数据库和JDBC资源
2)Statement接口
用于在已经建立连接的基础上向数据库发送SQL语句,Statement对用来执行不带参数的简单SQL语句
常用方法: executeUpdate() 用于执行数据库更新的SQL语句,如insert、update、delete等语句,返回更新的记录数
executeQuery(String sql) 用于执行数据库的查询操作,返回一个resultSet对象
3)PreparedStatement接口
它是Statement的子接口,属于预处理操作,由于它已经预编译过,所有执行速度上要比Statement对象要高。PreparedStatement接口可以用来动态的执行SQL语句。
它可以预防SQL注入攻击。SQL注入只对语句编译过程有破坏作用。
PreparedStatement对象在执行SQL命令时,命令回呗数据库进行编译和解析,并放到命令缓存区。然后,每当执行同一个PreparedStatement对象时,由于缓存区中可以发现预编译的命令,虽然它会被在解析一次,但是不会再进行编译,是可以重复使用的,所有可以提高系统的性能。
常用方法:executeUpdate() 用于执行数据库更新的SQL语句,如insert、update、delete等语句
executeQuery() 用于执行数据库的查询操作,返回一个resultSet对象
还有一些setXX(int index,int k ) 设定动态参数值得方法
4)DriverManager类
用来管理数据库中所有驱动程序,作用于用户和驱动程序之间,并在数据库的驱动程序之间建立连接。
Connection conn = DriverManager.getConnection(url,user,password); 获取数据库的连接
5)ResultSet接口
ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet实例具有指向数据行的指针,指针开始的位置在第一条记录前面,通过 next()方法将指针下移。
3、JDBC连接数据库的操作步骤:
1)加载JDBC驱动
2)建立数据库连接,获得Connection对象
3)获得Statement对象或者PreparedStatement 对象
4)执行SQL语句
5)访问结果集对象ResultSet对象
6)依次关闭上面所用的对象
import java sql.*;public class Test{ public static void main(String args[]){ Connection con = null;PreparedStatement ps = null;ResultSet rs = null; try{Class.forName("com.mysql.jdbc.Driver");con = DriverManager.getConnection("jdbc:mysql://localhost:3306/DatebaseName",user,password);PS = con.preparedStatement("select * from user where age >=?");ps.setInt(1,10);rs = ps.executeQuery();while(rs.next){ System.out.println(rs.getInt(1)+"---"rs.getString(2));}}catch(SQLException e1){ e1.printStackTrace();}finally{if(rs!=null){ rs.close();}if(ps!=null){ rs.close();}if(con!=null){ rs.close();}} }}
4、executeQuery()、executeUpdate()的用法区别
executeQuery()方法是在PreparedStatement对象在执行SQL查询,并返回查询生成的ResultSet对象
executeUpdate()方法中执行的SQL语句必须是DML语句,例如:insert,update,delete语句,或者是没有返回内容的DDL语句。
5、CallableStatement接口
主要用来调用数据库的存储过程。
假设存储过程名称为myproc
String sql = "{Call myproc(?,?,?)}"
CallableStatement catmt = null;
catmt = conn.prepareCall(sql);
使用CallableStatement调用数据库过程,同直接在数据库中调用过程一样。此处需要补充,带复习存储过程后完善此处
6、JDBC批处理
JDBC2.0中最重要的概念就是批处理操作,使用批处理操作可以一次性插入多条SQL语句,如果要完成批处理操作,则使用addBatch()加入要执行的一条SQL命令已经executeBatch()执行全部命令。
代码片段:
for(int i=0;i<10;i++){ ps.set(1,"张珊"+i) ps.addBatch();}int temp[] = ps.executeBatch();7、事务处理
事务就是所有操作要么一起成功,要么一起失败。
事务的(ACID):原子性、一致性、隔离性、持久性。
在JDBC中 一般而言,事务默认操作是自动提交,操作成功,系统自动调用commit(),失败则调用rollback()方法。
使用connection.setAutoCommit(false);//取消自动提交
connection.rollback();//事务回滚
8、Class.forName的作用
在java语言中,任何类只有被转载到JVM上才能运行。Class.forName()方法的作用就是把类加载打JVM中,它会返回一个带有给定字符串名的类对象,并且JVM会加载这个类,同时会执行该类的静态代码段。
类加载机制
Class.forName(className).newInstance();
- JDBC操作数据库详解
- 通过JDBC操作ORACLE数据库实例详解
- java-JDBC-ResultSet详解(java数据库操作)
- java-JDBC-ResultSet详解(java数据库操作)
- JAVA采用JDBC连接操作数据库详解
- java-JDBC-ResultSet详解(java数据库操作)
- java-JDBC-ResultSet详解(java数据库操作)
- java-JDBC-ResultSet详解(java数据库操作)
- java-JDBC-ResultSet详解(java数据库操作)
- java-JDBC-ResultSet详解(java数据库操作)
- java-JDBC-ResultSet详解(java数据库操作)
- java-JDBC-ResultSet详解(java数据库操作)
- java-JDBC-ResultSet详解(java数据库操作)
- 通过JDBC操作ORACLE数据库实例详解(最常用操作)
- SpringBoot开发详解(四)--JDBC操作数据库
- JDBC 及数据库操作
- JDBC操作数据库类
- JDBC操作数据库汇总
- 使用javascript实现省市联动小demo
- KVC中setValuesForKeysWithDictionary:
- Frontend Knowledge Structure
- 如何将Android Studio的工程导入到eclipse中
- Access restriction: The type SunJCE is not accessible due to restriction on required
- JDBC操作数据库详解
- 我的第一篇博客,
- SQL 存储过程 取前一天、一月、一年的时间
- window 桌面图标不正常显示解决办法
- Mongodb修改器的使用
- volatile关键字的作用
- 欢迎使用CSDN-markdown编辑器
- CSS学习笔记
- 使用Eclipse开发Java程序