jdbc的原始方法(未经封装)实现查询数据库表记录的操作

public static void main(String[]args) {

           Connection connection = null;

           PreparedStatementpreparedStatement = null;

           ResultSet resultSet = null;

           try {

              //加载数据库驱动

              Class.forName("com.mysql.jdbc.Driver");

              //通过驱动管理类获取数据库链接

               connection =  DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "itcast");

              //定义sql语句 ?表示占位符

              String sql = "select *from user where username = ?";

              //获取预处理statement

              preparedStatement =connection.prepareStatement(sql);

              //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值

              preparedStatement.setString(1,"王五");

              //向数据库发出sql执行查询,查询出结果集

              resultSet =  preparedStatement.executeQuery();

              //遍历查询结果集

              while(resultSet.next()){

                  System.out.println(resultSet.getString("id")+""+resultSet.getString("username"));

              }

           } catch (Exception e) {

              e.printStackTrace();

           }finally{

              //释放资源

              if(resultSet!=null){

                  try {

                     resultSet.close();

                  } catch (SQLException e){

                     // TODO Auto-generated catch block

                     e.printStackTrace();

                  }

              }

              if(preparedStatement!=null){

                  try {

                     preparedStatement.close();

                  } catch (SQLException e){

                     // TODO Auto-generated catch block

                     e.printStackTrace();

                  }

              }

              if(connection!=null){

                  try {

                     connection.close();

                  } catch (SQLException e){

                     // TODO Auto-generated catch block

                     e.printStackTrace();

                  }

              }

 

           }

 

       }


存在以下问题:

1、  数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。

2、  Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

3、  使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。

4、 对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。

你可能感兴趣的:(jdbc)