1. JDBC概念
JDBC其实就是数据库厂商对外提供的能够对自己的数据库进行操作的驱动包, 也就是jar文件
2. JDBC的基本使用流程
/* 1. 导入驱动包 (jar包), 例如Oracle的驱动包 ojdbc6.jar 2. 加载驱动类 (初始化加载JDBC类到Java虚拟机) Class.forName("oracle.jdbc.driver.OracleDriver"); 注意: ojdbc6.jar, 使用此包的时候, 该句可以省略 3. 获取数据库连接对象 (连接指定的数据库) Connection conn = DriverManager.getConnection(url, username, password); url: 表示要连接数据库的地址 username: 数据库的用户名 password: 数据库的密码 作用: 连接到指定的数据库, 并返回连接对象 4. 获取sql命令对象(编译和发送sql命令给数据库) Statement st = conn.createStatement(); 5. 创建sql命令 String sql = "...(这里写sql语句)"; 6. 执行sql命令 增删改: int i = st.executeUpdate(sql); 返回值如果小于0 , 表示未执行成功, 如果大于0, 表示修改的数据量 查询: ResultSet rs = st.executeQuery(sql); 返回存储了查询到的数据的对象 (ResultSet) ResultSet对象是基于指针进行数据存储的, 类似于枚举 7. 关闭资源 st.close(); conn.close(); */
3. 常见的JDBC错误
1. ClassNotFoundException (驱动类未找到)
2. SQLException: No suitable driver found for :thin...... (URL错误)
3. SQLException: ORA-01017: invalid username/password; logon denied (用户名或密码错误)
4. SQLSyntaxErrorException: ORA-00900: 无效的SQL语句 (SQL语句错误)
5. SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (主键冲突)
4. SQL注入的风险
使用Statement对象进行数据库操作的时候可能会出现sql注入的风险, 可以使用PreparedStatement解决
PreparedStatement特点 :
1. 防止sql注入
2. 提升sql语句的执行效率(有预编译的过程, 当批量执行同一类型的sql语句时, 效率较高)
5. 事务
一个事件的完成需要几个子操作的联合完成, 只要有一个子操作执行失败, 则数据回滚到原始状态, 都成功则提交数据
JDBC中的事务是自动提交的, 可以设置JDBC的事务为手动提交 :
/* Connection conn = DriverManager.getConnection(url, username, password); conn.setAutoCommit(false); // 设置事务不自动提交 conn.commit(); // 提交数据 conn.rollback(); // 回滚数据 */
原文:https://www.cnblogs.com/mpci/p/12308529.html