A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

就业班day_10_jdbc
jdbc概述        开发人员        jdbc接口规范                 sun规定的标准,在 java.sql 包下        mysql驱动jar包                oracle驱动jar包          数据库厂商提供        mysql数据库                        oracle数据库                开发流程     1注册驱动                Class.forName("com.mysql.jdbc.Driver");  加载驱动类,实现自动注册。所有不同数据库厂商提供的驱动实现类都添加了静态代码块来自动注册。                注意:jdbc4.0之后驱动包在META-INF下添加了driver的实现类,不用写class.forname也能注册驱动。         2获取连接                 String url = "jdbc:mysql://localhost:3306/store";  jdbc:mysql 表示协议  localhost:3306 表示数据库服务器IP和端口  store 表示数据库名称                 Connection conn = DriverManager.getConnection(String url,String username,String password);                 
3获取执行环境
    Statement stmt = conn.createStatement();
4执行sql返回resultset
    ResultSet rs = stmt.executeQuery(String sql);
5处理结果集
     while(rs.next()) {
        rs.getInt();   
        rs.getString();
     }
6释放资源
    rs.close()  stmt.close()  conn.close()  先开后关,写在finally中 标准写法如下:
    if(rs != null) {
        try{
            rs.close();
        }catch(SQLException e) {
            e.printStack();
        }
        rs = null;
    }
DriverDriverManager                1 DriverManager.regedistDriver(new com.msql.jdbc.Driver());                2 DriverManager.getConnection(String url,String username,String password);Connection                1 statement                2 事务操作 setAutoCommit commit  rollback  setSavePointStatement(实际不用)                executeQuery(DQL)  executeUpdate(DML,DDL)     PreparedStatement (mysql5之后默认不支持,需要通过参数设置开启预编译  useServerPrepStmts=true)                好处:                                * 防止SQL注入 ,屏蔽输入字符串中的mysql关键字功能,当作普通字符串。                                * 提高可读性                                * 提高效率                        预编译原理:                            sql需要先被校验语法,然后被编译,才能被执行。pstmt的sql在第一次会做校验语法和编译,第二次则跳过直接执行。                        SQL模板带有占位符?,占位符索引从1开始  模糊查询的匹配符在参数设置中体现,在sql中不体现。ps.setString("%s%")         CallableStatement  调用存储过程                注意:ps和cs是statement的子接口         ResultSet                 1 next() 判断下一行是否有数据   默认resultset的行光标在第一行的前面。                 2 getInt()  getString() getDouble() getDate() (返回的是java.sql.Date) getObject()                       索引或者列名  索引从1开始  如果有别名则是别名  建议用列名来获取。                JDBCUtils自定义工具类        将注册驱动、获取连接、释放资源的代码 和 jdbc连接的四要素用配置文件进行加载 进行封装。        批处理批处理 url添加参数rewriteBatchedStatements=true        Statement批处理                sql1 sql2 addBatch(sql1)  addBatch(sql2)   executeBatch()  clearBatch()PreparedStatement批处理                sql  setString(1,"name1")  addBatch()  setString(1,"name2")  addBatch()   executeBatch() clearBatch()                eg:                String sql = "insert into t_user(username,pwd,email) values(?,?,?)";                        ps = conn.prepareStatement(sql);                        for (int i = 0; i <= 10000; i++) {                                ps.setString(1, "wangwu"+i);                                ps.setString(2, "pwd"+i);                                ps.setString(3, "wangwu"+i+"@163.com");                                ps.addBatch();                                if(i % 1000 == 0){                                        ps.executeBatch();                                        ps.clearBatch();                                }                        }        连接池概述javax.sql包下的DataSource  连接池接口dbcp                 a  导包 commons-dbcp-1.4.jar  commons-pool-1.3.jar                 b  BasicDataSource  source = new BasicDataSource();                  c  设置连接池基本四要素   驱动类全名称  连接URL  用户名 密码 c3p0
导包 commons-dbutils-1.4.jarQueryRunner  该类可以实现crud操作                 QueryRunner qr = new QueryRunner(连接池对象  source)                  QueryRunner.query()      查询   8种结果集                 QueryRunner.update()          修改 删除 添加

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马