1、JDBC 的使用顺序为:
1)
注册驱动 (只做一次)
2)
建立连接(Connection)
3)
创建执行SQL的语句(Statement)
4)
处理执行结果(ResultSet)
5)
释放资源
2、实战应用
1)封装数据库连接字符串/** * JDBC配置信息 */</span> public class JdbcConfig { private String driverName; private String url; private String userName; private String password; public String getDriverName() { return driverName; } public void setDriverName(String driverName) { this.driverName = driverName; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
2)
封装数据库常用操作
public class DbUtil {
/**
* 取得Connection
* @return
*/</span>
public static Connection getConnection(){
Connection conn=null;
try {
//通过读取配置文件获取数据库连接字符串</span>
JdbcConfig jdbcConfig=XmlConfigReader.getInstance().getJdbcConfig();
//加载驱动</span>
Class.forName(jdbcConfig.getDriverName());
String url=jdbcConfig.getUrl();
String userName=jdbcConfig.getUserName();
String password=jdbcConfig.getPassword();
//建立连接</span>
conn = (Connection) DriverManager.getConnection(url, userName, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
3)完成用户的添加操作public class UserManager { /** * 添加用户 */</span> public void addUser(User user){ //创建SQL语句</span> String sql="insert into t_user(user_id,user_name,password,contact_tel,email,create_date)"+ " values(?,?,?,?,?,?)"; Connection conn=null; PreparedStatement pstmt=null; try{ //获取Connection</span> conn=DbUtil.getConnection(); pstmt=conn.prepareStatement(sql); //设置参数(这种方式可防止sql注入)</span> pstmt.setString(1, user.getUserId()); pstmt.setString(2, user.getUserName()); pstmt.setString(3, user.getPassword()); pstmt.setString(4, user.getContactTel()); pstmt.setString(5, user.getEmail()); pstmt.setTimestamp(6, new Timestamp(System.currentTimeMillis())); //执行用户添加操作</span> pstmt.executeUpdate(); }catch(SQLException e){ e.printStackTrace(); }finally{ DbUtil.close(pstmt); DbUtil.close(conn); } } }
4)如果添加多个用户,则需要一点小小的变动
public class UserManager { /** * 添加用户 */</span> public void addUser(List<User> userList){ //创建SQL语句</span> String sql="insert into t_user(user_id,user_name,password,contact_tel,email,create_date)"+ " values(?,?,?,?,?,?)"; Connection conn=null; PreparedStatement pstmt=null; try{ //获取Connection</span> conn=DbUtil.getConnection(); pstmt=conn.prepareStatement(sql); for(Iterator<User> iter=userList.iterator();iter.hasNext();){ User user=iter.next(); //设置参数(这种方式可防止sql注入)</span> pstmt.setString(1, user.getUserId()); pstmt.setString(2, user.getUserName()); pstmt.setString(3, user.getPassword()); pstmt.setString(4, user.getContactTel()); pstmt.setString(5, user.getEmail()); pstmt.setTimestamp(6, new Timestamp(System.currentTimeMillis())); pstmt.addBatch(); } //执行用户添加操作</span> pstmt.executeBatch(); }catch(SQLException e){ e.printStackTrace(); }finally{ DbUtil.close(pstmt); DbUtil.close(conn); } } }