01.原生态jdbc程序中问题总结

早过忘川 提交于 2020-01-16 23:12:00

1、数据库启动包配置到工程目录中(mysql5.1)

  • mysql-connector-java-5.1.7-bin.jar

 

 2、jdbc原生态操作数据库(程序)

  • 操作mysql数据库
 1 package cn.com.mybatis.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 
 9 public class JdbcTest {
10     public static void main(String[] args) {
11         //数据库连接
12         Connection connection = null;
13         
14         //预编译的statement,使用预编译的Statement可以提高数据库性能
15         PreparedStatement preparedStatement = null;
16         
17         //结果集
18         ResultSet resultSet = null;
19         
20         try {
21             //加载数据库驱动
22             Class.forName("com.mysql.jdbc.Driver");
23             
24             //通过驱动管理类来获取数据库连接
25             connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mybatis?allowMultiQueries=true&autoReconnect=true&characterEncoding=utf8", "root", "admin123");
26             //定义sql语句,?号表示占位符
27             String sql = "select * from user where username = ?";
28             //获取预编译的Statement
29             preparedStatement = connection.prepareStatement(sql);
30             
31             //向占位符填充参数
32             preparedStatement.setString(1, "王五");
33             
34             //向数据库发出sql执行查询,查询出结果集
35             resultSet = preparedStatement.executeQuery();
36             //遍历查询结果
37             while(resultSet.next()) {
38                 System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));
39             }
40         } catch (Exception e) {
41             e.printStackTrace();
42         } finally{
43             //释放资源
44             if(resultSet!=null){
45                 try {
46                     resultSet.close();
47                 } catch (SQLException e) {
48                     // TODO Auto-generated catch block
49                     e.printStackTrace();
50                 }
51             }
52             if(preparedStatement!=null){
53                 try {
54                     preparedStatement.close();
55                 } catch (SQLException e) {
56                     // TODO Auto-generated catch block
57                     e.printStackTrace();
58                 }
59             }
60             if(connection!=null){
61                 try {
62                     connection.close();
63                 } catch (SQLException e) {
64                     // TODO Auto-generated catch block
65                     e.printStackTrace();
66                 }
67             }
68 
69         }
70 
71 
72     }
73         
74 }

 

  • 运行结果:

 

 2、问题总结

  • 数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。

设想:使用数据库连接池管理数据库连接。

 

  •  将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。

设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

 

  •  向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

设想:将sql语句及占位符号和参数全部配置在xml中。

 

  • 从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。

设想:将查询的结果集,自动映射成java对象。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!