第3天--数据库应用与JDBC.精选.ppt

JDBC与操作数据库 编写数据库操作的大致流程 需要安装好对应数据库,比如MySQL。并添加数据库,添加表对象、数据等。 需要在项目里加入对应的jdbc jar包文件(封装访问特定数据库的类)。不同数据库产品对应的包是不一样的,如此处MySQL,可加入MySQL-connector-java-5.1.19-bin.jar。 Java代码,一般步骤(try、catch、finnaly): //注册JDBC驱动 Class.forName(org.gjt.mm.mysql.Driver); //建立与DB的连接 Connection conn =DriverManager.getConnection( jdbc:MySQL://localhost:3306/mydb, root, 1234); //CRUD操作 …… //关闭连接 conn.close(); JDBC与操作数据库 Statement执行增删改查 查询 … Statement stmt = conn.createStatement();//执行SQL语句的对象 String query = SELECT * FROM student; ResultSet rs=stmt.executeQuery(query);//查询返回的结果集对象 while(rs.next()){ System.out.println(rs.getString(1) +rs.getString(sname)); } stmt.close(); … 增删改 … Statement stmt = connection.createStatement(); String query = insert into sc values (1,3,90); int rows = stmt.executeUpdate(query);// 返回SQL影响的行数 … JDBC与操作数据库 PreparedStatment预处理 JDBC有三种查询方式, Statement?为通用查询,? PreparedStatement?用于执行参数化查询, CallableStatement用于存储过程。 PreparedStatment预处理优点: 执行高效、防止SQL注入、数据处理简便 高效:动态参数化处理,实质是将SQL语句框架先行分析、编译并缓存在数据库端,参数值传过来后马上执行。当多次执行相同结构SQL时,显然能减少数据库的负载; 防注入:PreparedStatement内置了字符过滤,因此可以防止SQL注入: 典型案例pwd输入?or?1?or,传统statement拼装为where?… pwd=?or?1?or 此外,规避了传统SQL对binary数据、日期数据处理较弱问题。采纳:setBinaryStream ()、setDate() JDBC与操作数据库 批处理 Batch 利用预处理SQL语句,把多个SQL语句一起发送到数据库端,在一次连接上批量执行。 例: String query = insert into sc values (?,?,?); pstmt = connection.prepareStatement(query); pstmt.setString(1,1); pstmt.setString(2,5); pstmt.setString(3,70); pstmt.addBatch(); pstmt.setString(1,1); pstmt.setString(2,6); pstmt.setString(3,80); pstmt.addBatch(); pstmt.executeBatch(); //一起处理 事务 数据库隔离级别 有5种,可用connection. setTransactionIsolation=设置值 TRANSACTION_NONE? 不支持事务? TRANSACTION_READ_UNCOMMITTED?允许脏读、不可重复读和幻读。? TRANSACTION_READ_COMMITTED?禁止脏读,但允许不可重复读和幻读。? TRANSACTION_REPEATABLE_READ?禁止脏读和不可重复读,单运行幻读。? TRANSACTION_SERIALIZABLE?禁止脏读、不可重复读和幻读。? 注:设置级别,

文档评论(0)

1亿VIP精品文档

相关文档