• 16-1-27---JDBC复习


    JDBC数据库连接学习
        用jdbc连接数据库
        1.加载驱动
            Class.forName("");
            用注册的方式会使内存中存在两个对象,而用上边的方法内存中仅存在一个驱动不需要依赖具体的API程序灵活性更高
        2.得到连接
            Connection conn = DriverManager();
        3.创建sql对象
            PreparedStatement
            CallableStatement
            Statement statement = conn.createStatement();
        4.通过statement向数据库发送sql指令
            statement.executeUpdate(sql); //执行 dml(update insert delete)
            statement.executeQuery(sql); //执行
        5.关闭资源(先开后闭,后开先闭)
        
        Connection 他代表数据库的连接。客户端与数据库所有交互都通过connection对象完成。
            createStatement();    创建数据库发送sql的statement对象
            prepareStatement(sql);    创建向数据库发送预编译sql的PerpareStatement对象。可以防止sql注入
            prepare(sql); 创建执行存储过程中的callableStatement对象
            
            什么时候需要吧setAutoCommit设为false,setAutoCommit(boolean autoCommit);    设置事务是否自动提交,把一组dml语句一起提交时,使用事务管理,设置成false(相当于做成原子性吧,我这样理解);
            
            commit();    
            rollback();
            ResultSet对象调用next() 方法最后一个返回false;注意是false不是null
            Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
            ResultSet中的静态常量
                        CLOSE_CURSORS_AT_COMMIT        该常量指示提交当前事务时,具有此可保存性的打开的 ResultSet 对象将被关闭。
                        CONCUR_READ_ONLY                     该常量指示不可以更新的 ResultSet 对象的并发模式。
                        CONCUR_UPDATABLE                     该常量指示可以更新的 ResultSet 对象的并发模式。
                        FETCH_FORWARD                       该常量指示将按正向(即从第一个到最后一个)处理结果集中的行。
                        FETCH_REVERSE
                        FETCH_UNKNOWN
                        HOLD_CURSORS_OVER_COMMIT
                        TYPE_FORWARD_ONLY
                        TYPE_SCROLL_INSENSITIVE     该常量指示可滚动但通常不受 ResultSet 底层数据更改影响的 ResultSet 对象的类型。
                        TYPE_SCROLL_SENSITIVE         该常量指示可滚动并且通常受 ResultSet 底层数据更改影响的 ResultSet 对象的类型。
            ResultSet rs = stmt.executeQuery("SELECT a, b FROM table");
            
            ResultSet 在默认情况下,我们的rs结果集,只能向前移动,这样rs结果集就不能复用。
            我们可以这样做
                statement = ct.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                
            rs.beforeFirst(); //我们希望重新使用结果集,
            rs.next();                //移动到下一行
            rs.Previous();        //移动到前一行
            rs.absolute(row); //移动到指定行
            rs.afterLast();        //移动到resultSet的最后面
            
            !!提问如果数据库中列的类型是varchar2,获取该列的数据调用什么方?Int类型呢?bigInt类型呢?Boolean类型呢?
            MySQL数据库JDBC对应类型数据表
            
            MySQL的连接并发,最大连接量13000
            
            即时关闭资源,一个资源不关也会出现问题。
            Connection连接尽可能晚连接,尽可能早释放,如果不能处理好Connection就极可能出现宕机。
            关闭资源的代码一定要放在finally
            
            SqlHelper类的编写                        
                1、访问数据库很平凡、有并发量时,不要把Connection设定成static
                2、加载驱动就需要一次

  • 相关阅读:
    安装redis报错 you need tcl 8.5 or newer in order to run redis test
    wm_concat函数oracle 11g返回clob
    ArrayList去重
    虚拟机linux下安装tomcat外部可访问
    虚拟机下Linux安装jdk
    本地硬盘和虚拟机之间复制文件
    VMware中为Linux安装vm-tools
    windows操作系统下载tomcat,并与eclipse进行整合
    Windows配置java运行环境的步骤
    Mac配置java运行环境的步骤
  • 原文地址:https://www.cnblogs.com/ya-cpp/p/5164674.html
Copyright © 2020-2023  润新知