传统的JDBC
public class TestMysql {
public static void main(String[] args) {
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//创建连接对象
String url = "jdbc:mysql://000.000.000.000:3306/test";
Connection connection = DriverManager.getConnection(url, "root", "Admin123!");
//准备sql语句
String sql = "select * from account";
//准备PreparedStatement对象
PreparedStatement pst = connection.prepareStatement(sql);
//执行sql语句
ResultSet rs = pst.executeQuery();
//遍历结果集
while(rs.next()){
Integer id = rs.getInt("id");
String name = rs.getString("name");
Double money = rs.getDouble("money");
System.out.println(id + " " + name + " " + money);
}
//关闭资源
rs.close();
pst.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
缺点:
1、数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。
2、Sql 语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql 变动需要改变 java 代码。
3、使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。
4、对结果集解析存在硬编码(查询列名),sql 变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成 pojo 对象解析比较方便。