济南哪家公司可以做网站,wordpress加入弹窗红包,114做网站,wordpress点击图片不显示使用原生jdbc进行查询数据步骤.
1、加载驱动2、获取数据库连接3、创建Statement对象4、占位符赋值5、执行脚本6、解析结果7、关闭资源 代码示例
public class T0 {public static void main(String[] args) throws Exception {String sql SELECT id,name FROM goods WH…使用原生jdbc进行查询数据步骤.
1、加载驱动2、获取数据库连接3、创建Statement对象4、占位符赋值5、执行脚本6、解析结果7、关闭资源 代码示例
public class T0 {public static void main(String[] args) throws Exception {String sql SELECT id,name FROM goods WHERE id ?;ListObject params new ArrayList(1);params.add(1);new T0().jdbcForSql(sql, params);}public void jdbcForSql(String sql, ListObject params) throws Exception {//从配置文件中读取配置信息Properties pro new Properties();pro.load(Resources.getResourceAsStream(database.properties));String driver pro.get(db.driver).toString();String userName pro.getProperty(db.username).toString();String pwd pro.getProperty(db.password).toString();String url pro.getProperty(db.url).toString();//加载驱动Class.forName(driver);//创建数据库链接Connection connection DriverManager.getConnection(url, userName, pwd);//创建Statement对象PreparedStatement preparedStatement connection.prepareStatement(sql);//给占位符赋值for (int i 0; i params.size(); i) {preparedStatement.setObject(i 1, params.get(i));}//执行脚本ResultSet resultSet preparedStatement.executeQuery();//结果解析while (resultSet.next()) {System.out.println(resultSet.getString(name));}//关闭资源if (resultSet ! null) {resultSet.close();}if (null ! preparedStatement) {preparedStatement.close();}if (connection ! null) {connection.close();}}
}从上面代码中可以看出明显的缺点 1、每与数据库交互一次都要执行一遍上面的流程流程繁琐 2、脚本与业务代码强耦合不利于复用和维护。
优化思路:
1、步骤1、步骤2 可以引入数据库连接池解决。2、步骤3~步骤7可以封装唯一不同的是执行脚本不同(传递参数)返回值不同[反射解决]查询操作。
步骤3~步骤7中核心是执行脚本执行脚本之前需要给脚本动态赋值脚本执行以后需要对结果进行解析正好对应代理模式动态代理。 基于以上分析可以将查询数据库的操作简化为两步 1、从数据库连接池中获取数据库连接 2、传入脚本获取结果。
下一篇基于 动态代理注解 实现简易版的MyBatis。