关闭

JDBC 实战应用

175人阅读 评论(0) 收藏 举报
分类:

JDBC 实战应用


1、JDBC 的使用顺序为:
        1)注册驱动 (只做一次) 
        2)建立连接(Connection)
       3)创建执行SQL的语句(Statement)
        4)处理执行结果(ResultSet)
        5)释放资源

2、实战应用
1)封装数据库连接字符串
[java] view plain copy
  1. /** 
  2.  * JDBC配置信息 
  3.  */</span>  
  4. public class JdbcConfig {  
  5.     private String driverName;  
  6.     private String url;  
  7.     private String userName;  
  8.     private String password;  
  9.       
  10.     public String getDriverName() {  
  11.         return driverName;  
  12.     }  
  13.     public void setDriverName(String driverName) {  
  14.         this.driverName = driverName;  
  15.     }  
  16.     public String getUrl() {  
  17.         return url;  
  18.     }  
  19.     public void setUrl(String url) {  
  20.         this.url = url;  
  21.     }  
  22.     public String getUserName() {  
  23.         return userName;  
  24.     }  
  25.     public void setUserName(String userName) {  
  26.         this.userName = userName;  
  27.     }  
  28.     public String getPassword() {  
  29.         return password;  
  30.     }  
  31.     public void setPassword(String password) {  
  32.         this.password = password;  
  33.     }  
  34. }  
        2)封装数据库常用操作
[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class DbUtil {  
  2.     /** 
  3.      * 取得Connection 
  4.      * @return 
  5.      */</span>  
  6.     public static Connection getConnection(){  
  7.    
  8.         Connection conn=null;  
  9.         try {  
  10.               //通过读取配置文件获取数据库连接字符串</span>  
  11.             JdbcConfig jdbcConfig=XmlConfigReader.getInstance().getJdbcConfig();  
  12.               //加载驱动</span>  
  13.   
  14.             Class.forName(jdbcConfig.getDriverName());  
  15.             String url=jdbcConfig.getUrl();  
  16.             String userName=jdbcConfig.getUserName();  
  17.             String password=jdbcConfig.getPassword();      
  18.               //建立连接</span>  
  19.             conn = (Connection) DriverManager.getConnection(url, userName, password);  
  20.         } catch (ClassNotFoundException e) {  
  21.             e.printStackTrace();  
  22.         } catch (SQLException e) {  
  23.             e.printStackTrace();  
  24.         }  
  25.         return conn;  
  26. }  
  27. }  
3)完成用户的添加操作
[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class UserManager {  
  2.     /** 
  3.      * 添加用户 
  4.      */</span>  
  5.     public void addUser(User user){  
  6.         //创建SQL语句</span>  
  7.         String sql="insert into t_user(user_id,user_name,password,contact_tel,email,create_date)"+  
  8.                     " values(?,?,?,?,?,?)";  
  9.           
  10.         Connection conn=null;  
  11.         PreparedStatement pstmt=null;  
  12.         try{  
  13.             //获取Connection</span>  
  14.             conn=DbUtil.getConnection();  
  15.             pstmt=conn.prepareStatement(sql);  
  16.               
  17.             //设置参数(这种方式可防止sql注入)</span>  
  18.             pstmt.setString(1, user.getUserId());  
  19.             pstmt.setString(2, user.getUserName());  
  20.             pstmt.setString(3, user.getPassword());  
  21.             pstmt.setString(4, user.getContactTel());  
  22.             pstmt.setString(5, user.getEmail());  
  23.             pstmt.setTimestamp(6new Timestamp(System.currentTimeMillis()));  
  24.               
  25.             //执行用户添加操作</span>  
  26.             pstmt.executeUpdate();  
  27.         }catch(SQLException e){  
  28.             e.printStackTrace();  
  29.         }finally{  
  30.             DbUtil.close(pstmt);  
  31.             DbUtil.close(conn);  
  32.         }  
  33.     }  
  34. }    

4)如果添加多个用户,则需要一点小小的变动
[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class UserManager {  
  2.     /** 
  3.      * 添加用户 
  4.      */</span>  
  5.     public void addUser(List<User> userList){  
  6.         //创建SQL语句</span>  
  7.         String sql="insert into t_user(user_id,user_name,password,contact_tel,email,create_date)"+  
  8.                     " values(?,?,?,?,?,?)";  
  9.           
  10.         Connection conn=null;  
  11.         PreparedStatement pstmt=null;  
  12.         try{  
  13.             //获取Connection</span>  
  14.             conn=DbUtil.getConnection();  
  15.             pstmt=conn.prepareStatement(sql);  
  16.             for(Iterator<User> iter=userList.iterator();iter.hasNext();){  
  17.             User user=iter.next();  
  18.             //设置参数(这种方式可防止sql注入)</span>  
  19.             pstmt.setString(1, user.getUserId());  
  20.             pstmt.setString(2, user.getUserName());  
  21.             pstmt.setString(3, user.getPassword());  
  22.             pstmt.setString(4, user.getContactTel());  
  23.             pstmt.setString(5, user.getEmail());  
  24.             pstmt.setTimestamp(6new Timestamp(System.currentTimeMillis()));  
  25.             pstmt.addBatch();  
  26.             }  
  27.            //执行用户添加操作</span>  
  28.             pstmt.executeBatch();  
  29.         }catch(SQLException e){  
  30.             e.printStackTrace();  
  31.         }finally{  
  32.             DbUtil.close(pstmt);  
  33.             DbUtil.close(conn);  
  34.         }  
  35.     }  
  36. }    
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    文章分类