您的位置:首页 > 编程语言

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

2017-08-25 23:30 295 查看

jdbc问题总结如下

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

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

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

对【结果集】解析存在【硬编码】,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();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdbc 数据库