程序代码:
package cn.ztc.mybatis.jdbc;
import java.sql.*;
public class JdbcTest01 {
public static void main(String[] args) {
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获得连接
connection=DriverManager.getConnection("jdbc:mysql://localhost:8010/test?characterEncoding=utf-8","root","wazl2012");
//创建preparedStatement,?为占位符
String sql="select * from user where username = ?";
preparedStatement=connection.prepareStatement(sql);
//通过setString设置参数
preparedStatement.setString(1, "王五");
resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
//操作结果集,通过getString获得该列的值
System.out.println(resultSet.getString("id")+" "+resultSet.getString("username")+" "+resultSet.getString("sex"));
}
}catch(Exception e){
e.printStackTrace();
}finally {
//对资源依次关闭
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
JDBC问题总结:
1.数据库连接,使用时就创建,不使用就立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库的性能
解决方案:使用数据库的连接池
2.将sql语句硬编码到java代码中,如果sql语句修改,需要重新编写java代码,不利于系统维护
解决方案:将sql语句配置在xml配置文件中,即使sql变化,也不需要对重新编写java代码
3.在向preparedStatement中设置参数时,占位符位置和对应值硬编码在java代码中,不利于系统维护
解决方案:将sql语句、占位符、参数全配置在xml配置文件中
4.从resultSet中遍历结果集数据时,将获取表的字段进行硬编码
解决方案:将查询的结果集自动映射成java对象
网友评论