导图社区 JDBC(Java oracle数据库连接)
JDBC 数据库连接学习笔记导图
编辑于2018-12-18 12:15:54JDBC (Java oracle数据库连接)
Jar文件
使用Jar文件: 1. 因为我们后期可能导入很多个jar文件, 为了让项目目录简洁 , 建议将所有的jar文件, 存储到一个文件夹中 (这个文件夹通常叫:lib) 2. 去数据库安装的根目录搜索ojdb6 进行复制到lib文件夹中 3. 右击jar文件 -- > build-path --> add to build path
JDBC 使用步骤
1. 加载数据库驱动 [第一步在SE中可以省略, 在web开发时必须编写] //驱动类地址: // oracle.jdbc.OracleDriver // oracle.jdbc.driver.OracleDriver Class.forName("oracle.jdbc.OracleDriver"); 2. 通过驱动管理器(DriverManager类) , 连接数据库, 并获取数据库的连接对象 连接地址 : jdbc:oracle:thin:@localhost:1521/XE 帐号 :system 密码: :123456 Connection conn = DriverManager.getConnection("连接地址","账号","密码"); 3. 通过连接对象, 创建SQL执行环境 (也叫SQL语句对象) Statement state = conn.createStatement(); 4. 执行SQL语句: state.execute("SQL语句"); 5. 释放资源 ,关闭连接 state.close(); conn.close();
常用的类
DriverManager类:
- 获取数据库连接对象 static Connection getConnection(url,username,password); 参数1. 数据库的连接地址 参数2. 数据库的帐号 参数3. 数据库的密码
Connection类:
- 创建执行sql环境 Statement createStatement(); - 创建预编译的sql环境 PreparedStatement state = conn.prepareStatement(String sql); sql语句中 , 包含未填充的参数. 以问号表示 例如: select id from xuser where username=? and password=?
PreparedStatement(预编译)
以后进行开发的时候 无论是否有SQL注入问题, 都应尽可能的采用PreparedStatement进行数据库的操作 ! 常用方法: - setXXX(int index,XXX value) - xxx表示的是填充的数据类型. 参数: index :表示的是SQL语句中的问号的索引值, 从1开始. 参数: value : 向问号中填充的参数内容.
执行: execute(); - 执行DML: executeUpdate(); - 执行查询语句(或登录): executeQuery();
Statement类
- boolean execute(String sql); 执行SQL语句(一般不用) 返回值: boolean类型, true表示执行的语句是查询 , false表示为其他语句 (true表示存在结果) - int executeUpdate(String sql); (对于数据库的修改行, 删除行, 新增行 都是对数据库表格进行更新 .) 用于执行DML语句 (update|insert|delete) 返回值: int类型, 表示当前执行的DML语句 , 执行后对数据库表格影响 的行数 ! - ResultSet executeQuery(String sql) 用于执行查询语句. 返回值: ResultSet是Java中对于数据库查询 结果集的封装. 表示结果集 ! 可以进行迭代, 取出查询的结果 ! - addBatch(String sql); - executeBatch(); 用于批量添加sql语句,可以添加多条 执行批处理
ResultSet 类(结果集)
常用的游标移动的方法: - next() : 游标向下一行数据移动, 成功返回true , 下一行数据不存在则返回false - privious(): 游标向上一行数据移动, 成功返回true , 上一行数据不存在则返回false 了解 - absolute(int rownum); 游标向指定行数据移动 了解 - beforeFirst() : 移动到第一行 了解 - aflterLast() : 移动到最后一行 了解
获取游标当前行列的数据的方法: - getXXX(String 列名);或 getXXX(int 列的索引); XXX指的是你要获取 的数据类型, 例如: getInt / getString / getDate / getDouble ...
添加where循环进行结果集遍历 用于查询有结果的
执行: execute(); - 执行DML: executeUpdate(); - 执行查询语句(或登录): executeQuery();
if(result.next()){ System.out.println("登录成功!"); }else{ System.out.println("登录失败"); }
用于登录的判断
执行: execute(); - 执行DML: executeUpdate(); - 执行查询语句(或登录): executeQuery();
记得释放资源close
执行: execute(); - 执行DML: executeUpdate(); - 执行查询语句(或登录): executeQuery();
数据的事务问题
JDBC中手动事务的开启
在Java中, 使用Connection对象的引用, 操作事务.
setAutoCommit(boolean flag); 设置是否自动提交事务, 默认为true ! 当设置为false后, 当前的连接的每次DML操作, 都需要手动结束事务. - commit() ------------------------------- conn.commit();
批处理
把多条SQL语句 , 放到一组一起执行 .
批处理与事务的区别
批处理: 将多条语句 一起执行, 只是提高了效率. 多条语句之间不存在关系, 一个语句的失败 不会影响其他语句 ! 事务: 将多条体育局 ,看作一个整体, 要么一起成功, 要么一起失败 !
DBCP连接池
1.需要引入两个Jar文件: 文件是apache提供的: dbcp.jar(连接池) pool.jar文件(连接池依赖库) 2. 在src的文件夹中创建一个.properties文件(java配置文件,键值对,等号两边不能加空格) Properties文件, 可以通过Java代码 转换为Properties类的对象! Properties类, 是Java 中 Map体系下的一个子类 ! 3. 将properties文件, 转换为Properties对象 InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("dbcp.properties"); Properties ppt = new Properties(); ppt.load(is) 4. 通过连接池的工厂对象, 获取一个连接池DataSource DataSource ds = BasicDataSourceFactory.createDataSource(ppt); 5. 通过连接池 , 获取连接对象 Connection conn = ds.getConnection(); 6. 获取连接对象后, 正常 操作数据库即可. 操作完毕, 数据库连接可不关闭 !
.properties文件内容: #驱动地址 driverClassName=oracle.jdbc.OracleDriver #连接地址 url=jdbc:oracle:thin:@localhost:1521/XE #帐号 username=system #密码 password=123 #选填的 #初始化的连接池 连接数量 initialaSize=5 #最大的连接数量 maxActive=100 #空闲时保留的 最大连接数量 maxIdle=10 #空闲时保留的 最小连接数量 minIdle=5 #超时时间 maxWait=10000