在我们没有学过什么框架的时候,我们是不是都是使用jdbc编程进行和数据库的连接,那么让我们回忆一下jdbc的编程步骤,和jdbc编程所存在的问题
一、jdbc编程步骤
/**
* 加载JDBC驱动
*/
Class.forName("com.mysql.jdbc.Driver");
/**
*创建连接字符串
*/
String url = "jdbc:mysql://localhost:3306/tuluntest";
/**
* 获取一条和MySQl的链接
*/
connection = DriverManager.getConnection(url,"root","132990");
//拼接的sql语句会产生SQL注入,比如sql语句中的#可以注释掉后面的东西、
//或者将where后面的表达式为恒真,这样就不会起到校验用户名,密码的作用。直接可以进入
//表中 。
/**
* 创建一个SQL查询语句
*/
st = connection.createStatement();
String sql = "select * from Student where name='wangjie'#' and id='1233554'";
/**
* 执行SQl
*/
ResultSet rs = st.executeQuery(sql);
//迭代打印rs结果集的内容
if(rs.next()){
System.out.println("登录成功");
} else {
System.out.println("登录失败");
}
/**
* 解决方案
*/
PreparedStatement preparedStatement = connection.prepareStatement("select *
from Student where name = ? and id = ?");
preparedStatement.setString(1,"wangjie");
preparedStatement.setInt(2,23);
ResultSet rs1 = preparedStatement.executeQuery();
//迭代打印rs结果集的内容
if(rs1.next()){
System.out.println("登录成功");
} else {
System.out.println("登录失败");
}
/*ResultSet rs = st.executeQuery("select * from Student");
while(rs.next()) {
StringBuilder sb = new StringBuilder();
sb.append(rs.getInt("id")+" ");
sb.append(rs.getString("name")+" ");
System.out.print(sb);
}*/
1、加载 JDBC连接驱动
2,创建连接的URL
3,通过URL、用户名、密码获取一条与数据库的连接。
4,创建一个SQl查询语句
5,执行一个SQl
6,迭代打印结果集的内容
二、jdbc编程存在的问题
1,数据库连接创建、释放频繁,造成系统资源浪费,从而影响系统性能
2,sql语句在代码中存在硬编码,造成代码不易维护
3,使用PreparedStatement向占位符传参数时也存在硬编码,因为SQl语句的where条件 可能多也可能少,修改sql语句还得修改代码,不易维护
4,resultSet遍历时,存在硬编码,如果将查询结果集映射为Java对象比较方便