• JDBC


    JDBC 技术是Java开发必备的知识,并且是学习 Hibernate 和 Mybatis 的基础,本文章一步步剖析 JDBC 技术,由浅入深的了解 JDBC 技术的全貌,什么是 JDBC ,怎么使用 JDBC ,为进一步学习集成框架打下良好的基础。

    主要内容:

    1.JDBC简介

    2.JDBC使用详解

    3.JDBC各种连接方式的对比

    JDBC简介

    JDBC全称为Java Data Base Connectivity(Java数据库连接),是java与数据库的桥梁。可以为多种数据库提供统一的访问。通过JDBC可以连接Oracle、MySql、Sql Server数据库。体现了JAVA的编写一次处处运行的优点。
     

     

    JDBC使用详解

    通过实现简单通讯录项目来深入理解JDBC。

    将多个联系人存入MySql数据库,同时拥有查看,添加,删除,修改等功能。

    工具准备:MySql,MyEclipse,Navicat(数据库管理工具)。

    1.创建MySql数据库

     1 /*
     2 Navicat MySQL Data Transfer
     3 
     4 Source Server         : localhost_3306
     5 Source Server Version : 50544
     6 Source Host           : localhost:3306
     7 Source Database       : book
     8 
     9 Target Server Type    : MYSQL
    10 Target Server Version : 50544
    11 File Encoding         : 65001
    12 
    13 Date: 2018-03-22 14:13:39
    14 */
    15 
    16 SET FOREIGN_KEY_CHECKS=0;
    17 
    18 -- ----------------------------
    19 -- Table structure for addressbook
    20 -- ----------------------------
    21 DROP TABLE IF EXISTS `addressbook`;
    22 CREATE TABLE `addressbook` (
    23   `id` int(11) NOT NULL AUTO_INCREMENT,
    24   `user_name` varchar(30) NOT NULL,
    25   `sex` int(11) DEFAULT NULL,
    26   `age` int(11) DEFAULT NULL,
    27   `birthday` date DEFAULT NULL,
    28   `email` varchar(30) DEFAULT NULL,
    29   `mobile` varchar(11) DEFAULT NULL,
    30   `create_user` varchar(30) DEFAULT NULL,
    31   `create_date` date DEFAULT NULL,
    32   `update_user` varchar(30) DEFAULT NULL,
    33   `update_date` date DEFAULT NULL,
    34   `isdel` int(11) DEFAULT NULL,
    35   PRIMARY KEY (`id`)
    36 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
    37 
    38 -- ----------------------------
    39 -- Records of addressbook
    40 -- ----------------------------
    41 INSERT INTO `addressbook` VALUES ('1', '王小明', '1', '20', '1998-02-17', 'xiaoming@163.com', '13911111111', 'ADMIN', '2018-03-22', 'ADMIN', '2018-03-22', '0');
    表结构

    2.JDBC获取数据库连接

    三步获取数据库连接(需要导入mysql的jar包)
    (1)加载驱动程序: Class.forName(driverClass)
    加载Mysql驱动:Class.forName("com.mysql.jdbc.Driver")
    加载Oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver")
    注意:驱动是固定写法
    (2)获得数据库连接: DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/book","root","root");
    注释:其中jdbc:mysql表示jdbc连接mysql,127.0.0.1:3306为服务器地址和端口,book为数据库名称,root分别是用户名和密码
    (3)创建Statement对象: conn.createStatement();
    实例:
     1 public class DBUtil {
     2     private static final String URL="jdbc:mysql://127.0.0.1:3306/book";
     3     private static final String USER="root";
     4     private static final String PASSWORD="123456";
     5     public static void main(String[] args) throws Exception  {
     6         //第一步:加载MySQL驱动
     7         Class.forName("com.mysql.jdbc.Driver");
     8         
     9         //第二步获得数据库的连接:
    10         Connection conn= DriverManager.getConnection(URL, USER, PASSWORD);
    11         
    12         //第三步:创建statement对象,用于在已经建立的连接的基础上向数据库发送SQL语句的对象
    13         Statement stmt =conn.createStatement();
    14         
    15         //通过数据库的连接操作数据库,实现填删改查
    16         ResultSet rs=stmt.executeQuery("SELECT user_name,age FROM address Book");
    17         while(rs.next()){
    18             System.out.println(rs.getString("user_name")+"  "+rs.getInt("age"));
    19         }
    20     }
    21 }
    DBUtil

    3.详设,采用MVC三层架构

    模型层:包括两个部分,对数据库的映射,对数据库映射的抽象方法增删改查(C R U D)
    控制层:控制数据的流通过程。把数据拼装起来展示给我们的视图层
    视图层:对数据的一个展示。

     

    控制层起到桥梁的作用,接收视图层传过来的参数,调用模型层,模型层将结果通知给控制层,控制层来更新视图层。
    1. 把视图层的展示、业务逻辑、数据存储的过程分开,通过控制层协调控制。每一部分由相应的人员负责,更有利于协调工作。
    2. 用户修改了数据之后,视图层将用户的这个行为传递到控制层(用于协调控制),控制层更新模型层(数据处理),模型层处理之后通知控制层,控制层再更新视图层(这时用户看到的就是修改之后的最新视图层)
    C R U D -->对数据库的操作,分别是新增、查询、修改和删除。

    4.代码实现:

    获取数据库连接:

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.SQLException;
     4 public class DBUtil {
     5 
     6     private static final String URL="jdbc:mysql://127.0.0.1:3306/book?useUnicode=true&characterEncoding=utf-8";
     7     private static final String USER="root";
     8     private static final String PASSWORD="";
     9     
    10     private static Connection conn=null;
    11     
    12     static {
    13         try {
    14             //1.加载驱动程序
    15             Class.forName("com.mysql.jdbc.Driver");
    16             //2.获得数据库的连接
    17             conn=DriverManager.getConnection(URL, USER, PASSWORD);
    18         } catch (ClassNotFoundException e) {
    19             e.printStackTrace();
    20         } catch (SQLException e) {
    21             e.printStackTrace();
    22         }
    23     }
    24     
    25     public static Connection getConnection(){
    26         return conn;
    27     }
    28 
    29 }
    DBUtil

    模型层:

      1 import java.util.Date;
      2 
      3 public class Goddess {
      4 
      5     private Integer id;
      6     private String user_name;
      7     private Integer sex;
      8     private Integer age;
      9     private Date birthday;
     10     private String email;
     11     private String mobile;
     12     private String create_user;
     13     private String update_user;
     14     private Date create_date;
     15     private Date update_date;
     16     private Integer isdel;
     17 
     18     public Integer getId() {
     19         return id;
     20     }
     21 
     22     public void setId(Integer id) {
     23         this.id = id;
     24     }
     25 
     26     public String getUser_name() {
     27         return user_name;
     28     }
     29 
     30     public void setUser_name(String user_name) {
     31         this.user_name = user_name;
     32     }
     33 
     34     public Integer getSex() {
     35         return sex;
     36     }
     37 
     38     public void setSex(Integer sex) {
     39         this.sex = sex;
     40     }
     41 
     42     public Integer getAge() {
     43         return age;
     44     }
     45 
     46     public void setAge(Integer age) {
     47         this.age = age;
     48     }
     49 
     50     public Date getBirthday() {
     51         return birthday;
     52     }
     53 
     54     public void setBirthday(Date birthday) {
     55         this.birthday = birthday;
     56     }
     57 
     58     public String getEmail() {
     59         return email;
     60     }
     61 
     62     public void setEmail(String email) {
     63         this.email = email;
     64     }
     65 
     66     public String getMobile() {
     67         return mobile;
     68     }
     69 
     70     public void setMobile(String mobile) {
     71         this.mobile = mobile;
     72     }
     73 
     74     public String getCreate_user() {
     75         return create_user;
     76     }
     77 
     78     public void setCreate_user(String create_user) {
     79         this.create_user = create_user;
     80     }
     81 
     82     public String getUpdate_user() {
     83         return update_user;
     84     }
     85 
     86     public void setUpdate_user(String update_user) {
     87         this.update_user = update_user;
     88     }
     89 
     90     public Date getCreate_date() {
     91         return create_date;
     92     }
     93 
     94     public void setCreate_date(Date create_date) {
     95         this.create_date = create_date;
     96     }
     97 
     98     public Date getUpdate_date() {
     99         return update_date;
    100     }
    101 
    102     public void setUpdate_date(Date update_date) {
    103         this.update_date = update_date;
    104     }
    105 
    106     public Integer getIsdel() {
    107         return isdel;
    108     }
    109 
    110     public void setIsdel(Integer isdel) {
    111         this.isdel = isdel;
    112     }
    113 
    114     @Override
    115     public String toString() {
    116         return "Goddess [id=" + id + ", user_name=" + user_name + ", sex="
    117                 + sex + ", age=" + age + ", birthday=" + birthday + ", email="
    118                 + email + ", mobile=" + mobile + ", create_user=" + create_user
    119                 + ", update_user=" + update_user + ", create_date="
    120                 + create_date + ", update_date=" + update_date + ", isdel="
    121                 + isdel + "]";
    122     }
    123 }
    Goddess 
      1 import java.sql.Connection;
      2 import java.sql.Date;
      3 import java.sql.PreparedStatement;
      4 import java.sql.ResultSet;
      5 import java.sql.SQLException;
      6 import java.util.ArrayList;
      7 import java.util.List;
      8 import java.util.Map;
      9 
     10 public class GoddessDao {
     11 
     12     public void addGoddess(Goddess g) throws Exception{
     13         Connection conn=DBUtil.getConnection();
     14         String sql="" +
     15                 "insert into addressbook" +
     16                 "(user_name,sex,age,birthday,email,mobile," +
     17                 "create_user,create_date,update_user,update_date,isdel)" +
     18                 "values(" +
     19                 "?,?,?,?,?,?,?,current_date(),?,current_date(),?)";
     20         PreparedStatement ptmt=conn.prepareStatement(sql);
     21         
     22         ptmt.setString(1, g.getUser_name());
     23         ptmt.setInt(2, g.getSex());
     24         ptmt.setInt(3, g.getAge());
     25         ptmt.setDate(4, new Date(g.getBirthday().getTime()));
     26         ptmt.setString(5, g.getEmail());
     27         ptmt.setString(6, g.getMobile());
     28         ptmt.setString(7, g.getCreate_user());
     29         ptmt.setString(8, g.getUpdate_user());
     30         ptmt.setInt(9, g.getIsdel());
     31         ptmt.execute();
     32     }
     33     
     34     public void updateGoddess(Goddess g) throws SQLException{
     35         Connection conn=DBUtil.getConnection();
     36         String sql="" +
     37                 " update addressbook " +
     38                 " set user_name=?,sex=?,age=?,birthday=?,email=?,mobile=?, " +
     39                 " update_user=?,update_date=current_date(),isdel=? " +
     40                 " where id=? ";
     41         PreparedStatement ptmt=conn.prepareStatement(sql);
     42         
     43         ptmt.setString(1, g.getUser_name());
     44         ptmt.setInt(2, g.getSex());
     45         ptmt.setInt(3, g.getAge());
     46         ptmt.setDate(4, new Date(g.getBirthday().getTime()));
     47         ptmt.setString(5, g.getEmail());
     48         ptmt.setString(6, g.getMobile());
     49         ptmt.setString(7, g.getUpdate_user());
     50         ptmt.setInt(8, g.getIsdel());
     51         ptmt.setInt(9, g.getId());
     52         ptmt.execute();
     53     }
     54     
     55     public void delGoddess(Integer id) throws SQLException{
     56         Connection conn=DBUtil.getConnection();
     57         String sql="" +
     58                 " delete from addressbook " +
     59                 " where id=? ";
     60         PreparedStatement ptmt=conn.prepareStatement(sql);
     61         
     62         ptmt.setInt(1, id);
     63         ptmt.execute();
     64     }
     65     public List<Goddess> query() throws Exception{
     66         List<Goddess> result=new ArrayList<Goddess>();
     67         
     68         Connection conn=DBUtil.getConnection();
     69         StringBuilder sb=new StringBuilder();
     70         sb.append("select id,user_name,age from addressbook  ");
     71         
     72         PreparedStatement ptmt=conn.prepareStatement(sb.toString());
     73         
     74         ResultSet rs=ptmt.executeQuery();
     75         
     76         Goddess g=null;
     77         while(rs.next()){
     78             g=new Goddess();
     79             g.setId(rs.getInt("id"));
     80             g.setUser_name(rs.getString("user_name"));
     81             g.setAge(rs.getInt("age"));
     82             result.add(g);
     83         }
     84         return result;
     85     }
     86     public List<Goddess> query(String name,String mobile,String email) throws Exception{
     87         List<Goddess> result=new ArrayList<Goddess>();
     88         
     89         Connection conn=DBUtil.getConnection();
     90         StringBuilder sb=new StringBuilder();
     91         sb.append("select * from addressbook  ");
     92         
     93         sb.append(" where user_name like ? and mobile like ? and email like ?");
     94         
     95         PreparedStatement ptmt=conn.prepareStatement(sb.toString());
     96         ptmt.setString(1, "%"+name+"%");
     97         ptmt.setString(2, "%"+mobile+"%");
     98         ptmt.setString(3, "%"+email+"%");
     99         System.out.println(sb.toString());
    100         ResultSet rs=ptmt.executeQuery();
    101         
    102         Goddess g=null;
    103         while(rs.next()){
    104             g=new Goddess();
    105             g.setId(rs.getInt("id"));
    106             g.setUser_name(rs.getString("user_name"));
    107             g.setAge(rs.getInt("age"));
    108             g.setSex(rs.getInt("sex"));
    109             g.setBirthday(rs.getDate("birthday"));
    110             g.setEmail(rs.getString("email"));
    111             g.setMobile(rs.getString("mobile"));
    112             g.setCreate_date(rs.getDate("create_date"));
    113             g.setCreate_user(rs.getString("create_user"));
    114             g.setUpdate_date(rs.getDate("update_date"));
    115             g.setUpdate_user(rs.getString("update_user"));
    116             g.setIsdel(rs.getInt("isdel"));
    117             
    118             result.add(g);
    119         }
    120         return result;
    121     }
    122     public List<Goddess> query(List<Map<String, Object>> params) throws Exception{
    123         List<Goddess> result=new ArrayList<Goddess>();
    124         
    125         Connection conn=DBUtil.getConnection();
    126         StringBuilder sb=new StringBuilder();
    127         sb.append("select * from addressbook where 1=1 ");
    128         
    129         if(params!=null&&params.size()>0){
    130             for (int i = 0; i < params.size(); i++) {
    131                 Map<String, Object> map=params.get(i);
    132                 sb.append(" and  "+map.get("name")+" "+map.get("rela")+" "+map.get("value")+" ");
    133             }
    134         }
    135         
    136         PreparedStatement ptmt=conn.prepareStatement(sb.toString());
    137         
    138         System.out.println(sb.toString());
    139         ResultSet rs=ptmt.executeQuery();
    140         
    141         Goddess g=null;
    142         while(rs.next()){
    143             g=new Goddess();
    144             g.setId(rs.getInt("id"));
    145             g.setUser_name(rs.getString("user_name"));
    146             g.setAge(rs.getInt("age"));
    147             g.setSex(rs.getInt("sex"));
    148             g.setBirthday(rs.getDate("birthday"));
    149             g.setEmail(rs.getString("email"));
    150             g.setMobile(rs.getString("mobile"));
    151             g.setCreate_date(rs.getDate("create_date"));
    152             g.setCreate_user(rs.getString("create_user"));
    153             g.setUpdate_date(rs.getDate("update_date"));
    154             g.setUpdate_user(rs.getString("update_user"));
    155             g.setIsdel(rs.getInt("isdel"));
    156             
    157             result.add(g);
    158         }
    159         return result;
    160     }
    161     public Goddess get(Integer id) throws SQLException{
    162         Goddess g=null;
    163         Connection conn=DBUtil.getConnection();
    164         String sql="" +
    165                 " select * from addressbook " +
    166                 " where id=? ";
    167         PreparedStatement ptmt=conn.prepareStatement(sql);
    168         
    169         ptmt.setInt(1, id);
    170         ResultSet rs=ptmt.executeQuery();
    171         while(rs.next()){
    172             g=new Goddess();
    173             g.setId(rs.getInt("id"));
    174             g.setUser_name(rs.getString("user_name"));
    175             g.setAge(rs.getInt("age"));
    176             g.setSex(rs.getInt("sex"));
    177             g.setBirthday(rs.getDate("birthday"));
    178             g.setEmail(rs.getString("email"));
    179             g.setMobile(rs.getString("mobile"));
    180             g.setCreate_date(rs.getDate("create_date"));
    181             g.setCreate_user(rs.getString("create_user"));
    182             g.setUpdate_date(rs.getDate("update_date"));
    183             g.setUpdate_user(rs.getString("update_user"));
    184             g.setIsdel(rs.getInt("isdel"));
    185         }
    186         return g;
    187     }
    188 }
    GoddessDao

    控制层:

     1 import java.sql.SQLException;
     2 import java.util.List;
     3 import java.util.Map;
     4 
     5 public class GoddessAction {
     6 
     7     public void add(Goddess goddess) throws Exception{
     8         GoddessDao dao=new GoddessDao();
     9         goddess.setSex(1);
    10         goddess.setCreate_user("ADMIN");
    11         goddess.setUpdate_user("ADMIN");
    12         goddess.setIsdel(0);
    13         dao.addGoddess(goddess);
    14     }
    15     
    16     public Goddess get(Integer id) throws SQLException{
    17         GoddessDao dao=new GoddessDao();
    18         return dao.get(id);
    19     }
    20     
    21     public void edit(Goddess goddess) throws Exception{
    22         GoddessDao dao=new GoddessDao();
    23         dao.updateGoddess(goddess);
    24     }
    25     public void del(Integer id) throws SQLException{
    26         GoddessDao dao=new GoddessDao();
    27         dao.delGoddess(id);
    28     }
    29     
    30     public List<Goddess>  query() throws Exception{
    31         GoddessDao dao=new GoddessDao();
    32         return dao.query();
    33     }
    34     public List<Goddess> query(List<Map<String, Object>> params) throws Exception{
    35         GoddessDao dao=new GoddessDao();
    36         return dao.query(params);
    37     }
    38 }
    GoddessAction

    视图层:

      1 import java.text.SimpleDateFormat;
      2 import java.util.ArrayList;
      3 import java.util.Date;
      4 import java.util.HashMap;
      5 import java.util.List;
      6 import java.util.Map;
      7 import java.util.Scanner;
      8 
      9 public class View {
     10 
     11     private static final String CONTEXT="欢迎来到简单通讯录:
    " +
     12             "下面是简单通讯录的功能列表:
    " +
     13             "[MAIN/M]:主菜单
    " +
     14             "[QUERY/Q]:查看全部联系人的信息
    " +
     15             "[GET/G]:查看某位联系人的详细信息
    " +
     16             "[ADD/A]:添加联系人信息
    " +
     17             "[UPDATE/U]:更新联系人信息
    " +
     18             "[DELETE/D]:删除联系人信息
    " +
     19             "[SEARCH/S]:查询联系人信息(根据姓名、手机号来查询)
    " +
     20             "[EXIT/E]:退出简单通讯录
    " +
     21             "[BREAK/B]:退出当前功能,返回主菜单";
     22 
     23     
     24     private static final String OPERATION_MAIN="MAIN";
     25     private static final String OPERATION_QUERY="QUERY";
     26     private static final String OPERATION_GET="GET";
     27     private static final String OPERATION_ADD="ADD";
     28     private static final String OPERATION_UPDATE="UPDATE";
     29     private static final String OPERATION_DELETE="DELETE";
     30     private static final String OPERATION_SEARCH="SEARCH";
     31     private static final String OPERATION_EXIT="EXIT";
     32     private static final String OPERATION_BREAK="BREAK";
     33 
     34     
     35     public static void main(String[] args) throws Exception {
     36         System.out.println(CONTEXT);
     37         
     38         Scanner s=new Scanner(System.in);
     39         GoddessAction action=new GoddessAction();
     40         
     41         String pervious=null;
     42         Integer step=1;
     43         Goddess go=null;
     44         
     45         while(s.hasNext()){
     46             String in=s.next();
     47             if(OPERATION_EXIT.equals(in.toUpperCase())
     48                     ||OPERATION_EXIT.substring(0, 1).equals(in.toUpperCase())){
     49                 System.out.println("您已成功退出简单通讯录");
     50                 break;
     51             }else if(OPERATION_MAIN.equals(in.toUpperCase())
     52                     ||OPERATION_MAIN.substring(0, 1).equals(in.toUpperCase())){
     53                 step=1;
     54                 pervious=null;
     55                 go=null;
     56                 System.out.println(CONTEXT);
     57             }
     58             else if(OPERATION_BREAK.equals(in.toUpperCase())
     59                         ||OPERATION_BREAK.substring(0, 1).equals(in.toUpperCase())){
     60                 step=1;
     61                 pervious=null;
     62                 go=null;
     63                 System.out.println(CONTEXT);
     64             }else if(OPERATION_QUERY.equals(in.toUpperCase())
     65                     ||OPERATION_QUERY.substring(0, 1).equals(in.toUpperCase())){
     66                 List<Goddess> list=action.query();
     67                 for (Goddess goddess : list) {
     68                     System.out.println(goddess.toString());
     69                 }
     70             }else if(OPERATION_GET.equals(in.toUpperCase())
     71                     ||OPERATION_GET.substring(0, 1).equals(in.toUpperCase())
     72                     ||OPERATION_GET.equals(pervious)){
     73                 pervious=OPERATION_GET;
     74                 if(1==step){
     75                     System.out.println("请输入查询的联系人ID:");
     76                 }else if(step>1){
     77                     Integer id=null;
     78                     Goddess g;
     79                     try {
     80                         id = Integer.valueOf(in);
     81                         try {
     82                             g = action.get(id);
     83                             if(g==null){
     84                                 System.out.println("查询联系人信息失败");
     85                             }else{
     86                                 System.out.println(g.toString());
     87                             }
     88                         } catch (Exception e) {
     89                             System.out.println("查询联系人信息失败");
     90                         }
     91                     } catch (Exception e) {
     92                         System.out.println("请输入正确的联系人ID:");
     93                     }
     94                     
     95                 }
     96                 step++;
     97             }else if(OPERATION_ADD.equals(in.toUpperCase())
     98                     ||OPERATION_ADD.substring(0, 1).equals(in.toUpperCase())
     99                     ||OPERATION_ADD.equals(pervious)){
    100                 pervious=OPERATION_ADD;
    101                 if(1==step){
    102                     System.out.println("请输入联系人的信息[姓名]:");
    103                 }else if(2==step){
    104                     go=new Goddess();
    105                     go.setUser_name(in);
    106                     System.out.println("请输入联系人的信息[年龄]:");
    107                 }else if(3==step){
    108                     Integer age=null;
    109                     try {
    110                         age = Integer.valueOf(in);
    111                         go.setAge(age);
    112                         System.out.println("请输入联系人的信息[生日,格式:2014-12-12]:");
    113                     } catch (Exception e) {
    114                         step=2;
    115                         System.out.println("请输入正确联系人的信息[年龄]:");
    116                     }
    117                 }else if(4==step){
    118                     SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
    119                     Date birthday=null;
    120                     try {
    121                         birthday = sf.parse(in);
    122                         go.setBirthday(birthday);
    123                         System.out.println("请输入联系人的信息[邮箱]:");
    124                     } catch (Exception e) {
    125                         step=3;
    126                         System.out.println("请输入正确联系人的信息[生日]:");
    127                     }
    128                 }else if(5==step){
    129                     go.setEmail(in);
    130                     System.out.println("请输入联系人的信息[手机号]:");
    131                 }else if(6==step){
    132                     go.setMobile(in);
    133                     try {
    134                         action.add(go);
    135                     } catch (Exception e) {
    136                         System.out.println("新增联系人信息失败");
    137                     }
    138                     System.out.println("新增联系人信息成功");
    139                     step=1;
    140                     pervious=null;
    141                 }
    142                 if(OPERATION_ADD.equals(pervious)){
    143                     step++;
    144                 }
    145             }else if(OPERATION_UPDATE.equals(in.toUpperCase())
    146                     ||OPERATION_UPDATE.substring(0, 1).equals(in.toUpperCase())
    147                     ||OPERATION_UPDATE.equals(pervious)){
    148                 pervious=OPERATION_UPDATE;
    149                 if(1==step){
    150                     System.out.println("请输入要修改的联系人ID:");
    151                 }else if(2==step){
    152                     Integer id=null;
    153                     try {
    154                         id = Integer.valueOf(in);
    155                         try {
    156                             go = action.get(id);
    157                             if(go==null){
    158                                 System.out.println("查询联系人信息失败");
    159                                 step=1;
    160                             }
    161                         } catch (Exception e) {
    162                             System.out.println("查询联系人信息失败");
    163                             step=1;
    164                         }
    165                     } catch (Exception e) {
    166                         System.out.println("请输入正确的联系人ID:");
    167                         step=1;
    168                     }
    169                     System.out.println("请输入新的联系人信息[姓名],如果不修改该值,请输入null:");
    170                 }else if(3==step){
    171                     if(null!=in){
    172                         go.setUser_name(in);
    173                     }
    174                     System.out.println("请输入新的联系人信息[年龄],如果不修改该值,请输入-1:");
    175                 }else if(4==step){
    176                     Integer age=null;
    177                     try {
    178                         age = Integer.valueOf(in);
    179                         if(-1!=age){
    180                             go.setAge(age);
    181                         }
    182                         System.out.println("请输入新的联系人信息[生日,格式:2014-12-12],如果不修改该值,请输入null:");
    183                     } catch (Exception e) {
    184                         step=3;
    185                         System.out.println("请输入正确联系人的信息[年龄]:");
    186                     }
    187                 }else if(5==step){
    188                     SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
    189                     Date birthday=null;
    190                     try {
    191                         if(null!=in){
    192                             birthday = sf.parse(in);
    193                             go.setBirthday(birthday);
    194                         }
    195                         System.out.println("请输入新的联系人信息[邮箱],如果不修改该值,请输入null:");
    196                     } catch (Exception e) {
    197                         step=4;
    198                         System.out.println("请输入正确联系人的信息[生日]:");
    199                     }
    200                 }else if(6==step){
    201                     if(null!=in){
    202                         go.setEmail(in);
    203                     }
    204                     System.out.println("请输入新的联系人信息[手机号],如果不修改该值,请输入null:");
    205                 }else if(7==step){
    206                     if(null!=in){
    207                         go.setMobile(in);
    208                     }
    209                     try {
    210                         action.edit(go);
    211                     } catch (Exception e) {
    212                         System.out.println("更新联系人信息失败");
    213                     }
    214                     System.out.println("更新联系人信息成功");
    215                     step=1;
    216                     pervious=null;
    217                 }
    218                 if(OPERATION_UPDATE.equals(pervious)){
    219                     step++;
    220                 }
    221             }else if(OPERATION_DELETE.equals(in.toUpperCase())
    222                     ||OPERATION_DELETE.substring(0, 1).equals(in.toUpperCase())
    223                     ||OPERATION_DELETE.equals(pervious)){
    224                 pervious=OPERATION_DELETE;
    225                 if(1==step){
    226                     System.out.println("请输入要删除的联系人ID:");
    227                 }else if(2==step){
    228                     Integer id=null;
    229                     try {
    230                         id = Integer.valueOf(in);
    231                         try {
    232                             action.del(id);
    233                             step=1;
    234                             System.out.println("删除联系人信息成功");
    235                         } catch (Exception e) {
    236                             System.out.println("删除联系人信息失败");
    237                         }
    238                     } catch (Exception e) {
    239                         System.out.println("请输入正确的联系人ID:");
    240                         step=1;
    241                     }
    242                 }
    243                 if(OPERATION_DELETE.equals(pervious)){
    244                     step++;
    245                 }
    246             }else if(OPERATION_SEARCH.equals(in.toUpperCase())
    247                     ||OPERATION_SEARCH.substring(0, 1).equals(in.toUpperCase())
    248                     ||OPERATION_SEARCH.equals(pervious)){
    249                 pervious=OPERATION_SEARCH;
    250                 if(1==step){
    251                     System.out.println("请输入要查询的联系人信息,支持姓名、手机号查询,如果两个参数都输入则用逗号分隔[user_name=xx,mobile=xx]:");
    252                 }else if(2==step){
    253                     if(in!=null&&in!=""){
    254                         List<Map<String, Object>> params=new ArrayList<Map<String,Object>>();
    255                         Map<String, Object> param=null;
    256                         String[] strs=in.split(",");
    257                         for (int i = 0; i < strs.length; i++) {
    258                             String[] strs_s=strs[i].split("=");
    259                             param=new HashMap<String, Object>();
    260                             param.put("name", strs_s[0]);
    261                             param.put("rela", "=");
    262                             param.put("value", "'"+strs_s[1]+"'");
    263                             params.add(param);
    264                         }
    265                         List<Goddess> list=action.query(params);
    266                         if(list!=null&&list.size()>0){
    267                             for (Goddess goddess : list) {
    268                                 System.out.println(goddess.toString());
    269                             }
    270                         }else{
    271                             System.out.println("没有查询到联系人信息。。。");
    272                         }
    273                         step=1;
    274                     }
    275                 }
    276                 if(OPERATION_SEARCH.equals(pervious)){
    277                     step++;
    278                 }
    279             }
    280         }
    281     }
    282 }
    View

    JDBC各种连接方式的对比

    1、JDBC + ODBC桥的方式。特点:需要数据库的ODBC驱动,仅适用于微软的系统 这种方式,JDBC将调用传递给ODBC,然后ODBC再调用本地的数据库驱动代码。

    2、JDBC + 厂商API的形式。特点:厂商API一般使用C编写 这种方式,JDBC将调用直接传递给厂商API的服务,然后在调用本地的数据库驱动。

    3、JDBC + 厂商Database Connection Server + DataBase的形式。 特点:在JAVA与DATABASE之间架起了一台专门用于数据库连接的服务器(一般有数据库厂商提供) 这种方式,JDBC将调用传递给中间服务器,中间服务器再将调用转换成数据库能够被调用的形式,在调用数据库服务器。中间增设数据库服务器能够提升效率,但不如直接操作数据库便捷。

    4、JDBC + DATABASE的连接方式。 特点:这使得Application与数据库分开,开发者只需关心内部逻辑的实现而不需注重数据库连接的具体实现。(没有中间环节,是推荐方式!)

  • 相关阅读:
    0基础培训Web前端2个月实习一个月4000?
    amazon kindle和kindle阅读
    手动双面打印
    一分价钱一分货
    【转】cocos2d-x 开发中使用的一些工具
    怎么做网线,网线水晶头接法和线序(图文详解)
    schedule
    Match+Faq
    【转】以XML文件方式保存用户数据——2013-08-25 22
    【转】针对iOS VS. Android开发游戏的优劣——2013-08-25 17
  • 原文地址:https://www.cnblogs.com/Wonderful-life217/p/8608919.html
Copyright © 2020-2023  润新知