JDBC无封装下的标准代码和JDBC问题总结-V1.0

来源:互联网 发布:asp通用查询系统源码 编辑:程序博客网 时间:2024/06/02 02:43

jdbc问题总结如下

  1. 数据库【连接创建、释放频繁】造成系统资源浪费,从而影响系统性能。解决方式:使用【数据库连接池】可解决此问题。

  2. 【Sql语句】在代码中【硬编码】,造成代码不易维护,在实际应用中sql语句可能经常发生变化,sql变动需要改变文件下的java代码。

  3. 使用预编译声明【preparedStatement】向【占位符传参】存在【硬编码】,因为sql语句的where条件不一定,?数量可能多也可能少,对应位置也可能变化,修改sql后还要修改对应代码,系统不易维护。

  4. 对【结果集】解析存在【硬编码】,sql变化导致解析代码变化,系统不易维护,如果能将【数据库记录封装成pojo对象】解析相对比较方便。

JDBC无封装下的标准代码

public static void main(String[] args) {    Connection conn = null;    PreparedStatement pstmt = null;    ResultSet rs = null;try {    // 加载数据库连接驱动    Class.forName("com.mysql.jdbc.Driver");    // 通过DriverManager驱动管理类获取数据库连接【问题一】    connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_project?characterEncoding=utf-8", "root", "root");    // 定义sql语句 ?表示占位符【问题二】    String sql="select * from tb_user where username=?";    // 获取预处理statement    pstmt= conn.prepareStatement(sql);    // 设置参数,第一个参数为sql语句中占位符的序号(从1开始),第二个参数为设置的参数值【问题三】    pstmt.setString(1, "王五");    // 向数据库发出sql执行查询,查询出结果集【问题四】    rs= pstmt.executeQuery();        // 遍历查询结果集            while (rs.next()) {                System.out.println(rs.getString("id")                             + "  " + rs.getString("username"));            }        } catch (Exception e) {            e.printStackTrace();        } finally {        // 释放资源            if (rs!= null) {                try {                    rs.close();                } catch (Exception e) {                    e.printStackTrace();                }            }            if (pstmt!= null) {                try {                    pstmt.close();                } catch (Exception e) {                    e.printStackTrace();                }            }            if (conn!= null) {                try {                    conn.close();                } catch (Exception e) {                    e.printStackTrace();                }            }        }    }
原创粉丝点击