Java学习系列(十九)Java面向对象之数据库编程

来源:互联网 发布:域名中com代表什么 编辑:程序博客网 时间:2024/05/20 05:06

JDBC(Java Data Base Connectivity:java数据库连接):它定义了一组标准的操作数据库的接口,既然是接口,那它就是一种规范,是Java操作数据库的技术规范。

Java数据库编程有两步常用操作

1.加载(或注册)JDBC驱动程序
Class.forName(“com.mysql.jdbc.Driver”); 推荐这种方式,不会对具体的驱动类产生依赖。
DriverManager.registerDriver(com.mysql.jdbc.Driver); 会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

2.建立数据库Connection
Connection conn = DriverManager.getConnection(url, user, password);DriverManager是一个驱动管理器,内部有一个驱动注册表(Map结构),可以向其注册多个JDBC驱动。

举例说明1:

 

Java代码  收藏代码
  1. /** 
  2.  * @author lhy 
  3.  * @description 数据库工具类 
  4.  */  
  5. public class DBUtil {  
  6.     // 创建连接  
  7.     public static Connection createConn() {  
  8.         Connection conn = null;  
  9.         try {  
  10.             // 加载驱动程序  
  11.             Class.forName("com.mysql.jdbc.Driver");  
  12.             // 获取连接(这里用户名为root,密码为空)  
  13.             conn = DriverManager.getConnection(  
  14.                     "jdbc:mysql://localhost:3306/test""root""");  
  15.         } catch (ClassNotFoundException e) {  
  16.             e.printStackTrace();  
  17.         } catch (SQLException e) {  
  18.             e.printStackTrace();  
  19.         }  
  20.         return conn;  
  21.     }  
  22.   
  23.     // 创建回话,获取预处理语句(可以防止sql语句注入)  
  24.     public static PreparedStatement prepare(Connection conn, String sql) {  
  25.         PreparedStatement ps = null;  
  26.         try {  
  27.             ps = conn.prepareStatement(sql);  
  28.         } catch (SQLException e) {  
  29.             e.printStackTrace();  
  30.         }  
  31.         return ps;  
  32.     }  
  33.   
  34.     // 关闭连接  
  35.     public static void close(Connection conn) {  
  36.         if (conn != null) {  
  37.             try {  
  38.                 conn.close();  
  39.                 conn = null;  
  40.             } catch (SQLException e) {  
  41.                 e.printStackTrace();  
  42.             }  
  43.         }  
  44.     }  
  45.   
  46.     // 关闭回话  
  47.     public static void close(Statement st) {  
  48.         if (st != null) {  
  49.             try {  
  50.                 st.close();  
  51.                 st = null;  
  52.             } catch (SQLException e) {  
  53.                 e.printStackTrace();  
  54.             }  
  55.         }  
  56.     }  
  57.   
  58.     // 关闭查询结果集  
  59.     public static void close(ResultSet rs) {  
  60.         if (rs != null) {  
  61.             try {  
  62.                 rs.close();  
  63.                 rs = null;  
  64.             } catch (SQLException e) {  
  65.                 e.printStackTrace();  
  66.             }  
  67.         }  
  68.     }  
  69. }  

 

下面用户表为例,调用Statement对象的executeQuery()方法或executeUpdate()方法,让DBMS 执行具体的SQL语句,以便对数据执行查询、增、删、改等操作;
我们先建好一张用户表(user,数据库为test)

创建实体类(User):

 

Java代码  收藏代码
  1. public class User {  
  2.     private int id;  
  3.     private String username;  
  4.     private String password;  
  5.   
  6.     public User() {  
  7.     }  
  8.   
  9.     public User(int id, String username, String password) {  
  10.         this.id = id;  
  11.         this.username = username;  
  12.         this.password = password;  
  13.     }  
  14.   
  15.     public int getId() {  
  16.         return id;  
  17.     }  
  18.   
  19.     public void setId(int id) {  
  20.         this.id = id;  
  21.     }  
  22.   
  23.     public String getUsername() {  
  24.         return username;  
  25.     }  
  26.   
  27.     public void setUsername(String username) {  
  28.         this.username = username;  
  29.     }  
  30.   
  31.     public String getPassword() {  
  32.         return password;  
  33.     }  
  34.   
  35.     public void setPassword(String password) {  
  36.         this.password = password;  
  37.     }  
  38.   
  39.     @Override  
  40.     public String toString() {  
  41.         return "User [id=" + id + ", password=" + password + ", username="  
  42.                 + username + "]";  
  43.     }  
  44.   
  45. }  
Java代码  收藏代码
  1. /** 
  2.  * @author lhy 
  3.  * @description 对用户的CRUD相关操作 
  4.  */  
  5. public class UserDao {  
  6.     // 添加用户  
  7.     public void add(User u) {  
  8.         Connection conn = DBUtil.createConn();  
  9.         String sql = "insert into user values(null,?,?)";  
  10.         PreparedStatement ps = DBUtil.prepare(conn, sql);  
  11.         try {  
  12.             ps.setString(1, u.getUsername());  
  13.             ps.setString(2, u.getPassword());  
  14.             ps.executeUpdate();  
  15.         } catch (SQLException e) {  
  16.             e.printStackTrace();  
  17.         }  
  18.         DBUtil.close(ps);  
  19.         DBUtil.close(conn);  
  20.     }  
  21.   
  22.     // 根据Id删除用户  
  23.     public void deleteById(int id) {  
  24.         Connection conn = DBUtil.createConn();  
  25.         String sql = "delete from user where id=?";  
  26.         PreparedStatement ps = DBUtil.prepare(conn, sql);  
  27.         try {  
  28.             ps.setInt(1, id);  
  29.             ps.executeUpdate();  
  30.         } catch (SQLException e) {  
  31.             e.printStackTrace();  
  32.         }  
  33.         DBUtil.close(ps);  
  34.         DBUtil.close(conn);  
  35.     }  
  36.   
  37.     // 删除用户  
  38.     public void delete(User u) {  
  39.         deleteById(u.getId());  
  40.     }  
  41.   
  42.     // 更新用户  
  43.     public void update(User u) {  
  44.         Connection conn = DBUtil.createConn();  
  45.         String sql = "update user set username=?,password=? where id=?";  
  46.         PreparedStatement ps = DBUtil.prepare(conn, sql);  
  47.         try {  
  48.             ps.setString(1, u.getUsername());  
  49.             ps.setString(2, u.getPassword());  
  50.             ps.setInt(3, u.getId());  
  51.             ps.executeUpdate();  
  52.         } catch (SQLException e) {  
  53.             e.printStackTrace();  
  54.         }  
  55.         DBUtil.close(ps);  
  56.         DBUtil.close(conn);  
  57.     }  
  58.   
  59.     // 根据查询用户  
  60.     public User loadById(int id) {  
  61.         Connection conn = DBUtil.createConn();  
  62.         String sql = "select * from user where id=?";  
  63.         PreparedStatement ps = DBUtil.prepare(conn, sql);  
  64.         User user = null;  
  65.         ResultSet rs = null;  
  66.         try {  
  67.             ps.setInt(1, id);  
  68.             rs = ps.executeQuery();  
  69.             if (rs.next()) {  
  70.                 user = new User();  
  71.                 user.setId(rs.getInt("Id"));  
  72.                 user.setUsername(rs.getString("username"));  
  73.                 user.setPassword(rs.getString("password"));  
  74.             }  
  75.         } catch (SQLException e) {  
  76.             e.printStackTrace();  
  77.         }  
  78.         DBUtil.close(rs);  
  79.         DBUtil.close(ps);  
  80.         DBUtil.close(conn);  
  81.         return user;  
  82.     }  
  83.   
  84.     // 查询所有用户信息  
  85.     public List<User> listUser() {  
  86.         Connection conn = DBUtil.createConn();  
  87.         String sql = "select * from user";  
  88.         PreparedStatement ps = DBUtil.prepare(conn, sql);  
  89.         List<User> list = new ArrayList<User>();  
  90.         ResultSet rs = null;  
  91.         try {  
  92.             rs = ps.executeQuery();  
  93.             while (rs.next()) {  
  94.                 User user = new User();  
  95.                 user.setId(rs.getInt("Id"));  
  96.                 user.setUsername(rs.getString("username"));  
  97.                 user.setPassword(rs.getString("password"));  
  98.                 list.add(user);  
  99.             }  
  100.         } catch (SQLException e) {  
  101.             e.printStackTrace();  
  102.         }  
  103.         DBUtil.close(rs);  
  104.         DBUtil.close(ps);  
  105.         DBUtil.close(conn);  
  106.         return list;  
  107.     }  
  108. }  

客户端(测试类):

 

 

Java代码  收藏代码
  1. public class TestUser {  
  2.     public static void main(String[] args) {  
  3.         User user = new User();  
  4.         user.setUsername("张三");  
  5.         user.setPassword("123");  
  6.         UserDao userDao = new UserDao();  
  7.         // userDao.add(user);//添加用户  
  8.         // userDao.deleteById(1);// 删除Id为1的用户  
  9.         // userDao.update(new User(2, "李四", "1234546"));// 更新Id为2的用户信息  
  10.         // System.out.println(userDao.loadById(2)); // 查询Id为2的用户信息  
  11.         // 列出所有的用户  
  12.         List<User> list = userDao.listUser();  
  13.         for (User u : list) {  
  14.             System.out.println(u);  
  15.         }  
  16.     }  
  17. }  

 

Java的数据库编程比较简单,这里就不再赘述。
结束语
Javase基础部分就到这了,之后会更新 Java的反射、注解、代理、设计模式、jsp、Struts、Hibernate、Spring等内容。微笑相信学完了Javase基础之后,对后面的学习会更加轻松。

0 0
原创粉丝点击