jdbcDemo及问题总结

import java.sql.SQLException;

public class JDBCDemo{
     public static void main(String []args){
          Connection connection = null;
          PreparedStatement preparedStatement = null;
          ResultSet resultSet = null;

          try{
               //加载数据库驱动
               Class.forName("com.mysql.jdbc.Driver");
               //通过驱动管理类获取数据库连接
               connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysqlDemo?characterEncoding=utf-8","username","password");
               //定义sql语句?表示占位符
               String sql = "select * from user where username = ?";
               //获取预处理statement
               preparedStatement = connection.prepareStatement(sql);
               //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
               prepareStatement.setString(1,"王五");
               //向数据库发出sql执行查询,查询结果集
               resultSet = prepareStatement.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();
                    }
                }
              }
          }
     }
}

jdbc问题总结如下:

  • 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题
  • Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码
  • 使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护
  • 对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值