[Java] java 控制台项目 对数据库进行增删改查 →→→→→进入此内容的聊天室

来自 , 2021-01-31, 写在 Java, 查看 188 次.
URL http://www.code666.cn/view/7f975a56
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.ResultSetMetaData;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11.  
  12. public class TestConnection {
  13.  
  14.     /**
  15.      * 定义链接需要的字符串
  16.      */
  17.     private static final String str1 = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
  18.     private static final String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test3";
  19.     private static final String user = "sa";
  20.     private static final String password = "910627";
  21.     Connection conn;
  22.     ResultSet rs;
  23.  
  24.     /**
  25.      * 加载驱动类
  26.      */
  27.     static {
  28.  
  29.         try {
  30.             Class.forName(str1);
  31.         } catch (ClassNotFoundException e) {
  32.             // TODO Auto-generated catch block
  33.             e.printStackTrace();
  34.         }
  35.     }
  36.  
  37.     /**
  38.      * 建立链接的方法
  39.      *
  40.      * @return
  41.      */
  42.     private Connection getConnection() {
  43.  
  44.         try {
  45.             conn = DriverManager.getConnection(url, user, password);
  46.  
  47.         } catch (Exception e) {
  48.             // TODO: handle exception
  49.         }
  50.         return conn;
  51.  
  52.     }
  53.  
  54.     /**
  55.      * 使用prepareStatement来预编译查询语句 然后传参数的值来作为条件查询数据库 返回list
  56.      *
  57.      * @param id
  58.      * @return
  59.      */
  60.     public List getData(String sql, Object[] array) {
  61.         // SQL语句
  62.         List list = new ArrayList();
  63.         conn = this.getConnection();
  64.         try {
  65.             // 预编译
  66.             st = conn.prepareStatement(sql);
  67.             // 利用方法传入参数
  68.             for (int i = 0; i < array.length; i++) {
  69.                 st.setObject(i + 1, array[i]);
  70.             }
  71.             // 执行查询
  72.             rs = st.executeQuery();
  73.             while (rs.next()) {
  74.                 Map map = new HashMap();
  75.  
  76.                 ResultSetMetaData rsmd = rs.getMetaData();
  77.                 // 以列名为键 存储每一行数据进map
  78.                 for (int i = 1; i <= rsmd.getColumnCount(); i++) {
  79.  
  80.                     map.put(rsmd.getColumnName(i), rs.getObject(i));
  81.  
  82.                 }
  83.                 // 将每一个map加入list 这样list的到就是每一行
  84.                 list.add(map);
  85.  
  86.             }
  87.  
  88.         } catch (SQLException e) {
  89.             // TODO Auto-generated catch block
  90.             e.printStackTrace();
  91.         } finally {
  92.             // 关闭连接
  93.             this.close();
  94.         }
  95.         return list;
  96.  
  97.     }
  98.  
  99.     /**
  100.      * 更新数据的方法
  101.      *
  102.      * @param sql
  103.      * @param array
  104.      * @return
  105.      */
  106.     public int update(String sql, Object array[]) {
  107.         conn = this.getConnection();
  108.         int line = 0;
  109.         try {
  110.  
  111.             st = conn.prepareStatement(sql);
  112.             // 传参数
  113.             for (int i = 0; i < array.length; i++) {
  114.                 st.setObject(i + 1, array[i]);
  115.             }
  116.  
  117.             line = st.executeUpdate();
  118.             // 判断是否修改成功
  119.             if (line > 0) {
  120.                 return line;
  121.  
  122.             } else {
  123.  
  124.                 System.out.println("更新失败");
  125.             }
  126.  
  127.         } catch (SQLException e) {
  128.  
  129.             e.printStackTrace();
  130.         } finally {
  131.             // 关闭连接
  132.             this.close();
  133.         }
  134.         return 0;
  135.     }
  136.  
  137.     /**
  138.      * 关闭连接
  139.      */
  140.     private void close() {
  141.  
  142.         try {
  143.             if (rs != null) {
  144.                 rs.close();
  145.             }
  146.         } catch (SQLException e) {
  147.             // TODO Auto-generated catch block
  148.             e.printStackTrace();
  149.         } finally {
  150.  
  151.             try {
  152.                 if (st != null) {
  153.                     st.close();
  154.                 }
  155.             } catch (SQLException e) {
  156.                 // TODO Auto-generated catch block
  157.                 e.printStackTrace();
  158.             } finally {
  159.  
  160.                 try {
  161.                     if (conn != null) {
  162.                         conn.close();
  163.                     }
  164.                 } catch (SQLException e) {
  165.                     // TODO Auto-generated catch block
  166.                     e.printStackTrace();
  167.                 }
  168.             }
  169.         }
  170.     }
  171. }
  172. ----------------------------------------------------------------------------
  173.  
  174. import java.util.Iterator;
  175. import java.util.List;
  176. import java.util.Map;
  177. import java.util.Scanner;
  178. import java.util.Set;
  179. /**
  180.  * 数据库操作类
  181.  * @author Administrator
  182.  *
  183.  */
  184. public class Handle {
  185.     TestConnection tc = new TestConnection();
  186.     Scanner sc = new Scanner(System.in);
  187.     /**
  188.      * 查询方法
  189.      */
  190.     public void query() {
  191.         System.out.println("1:查询全部");
  192.         System.out.println("2:根据employeeId查询");
  193.         System.out.print("选择你要执行选项");
  194.         // Scanner sc2 = new Scanner(System.in);
  195.         int type2 = sc.nextInt();
  196.         switch (type2) {
  197.  
  198.         case 1:
  199.             String Sql1 = "select employeeId,employeeName,email,employeeSalary,departmentId from employee where 1=?";
  200.             Object[] array1 = { 1 };
  201.             List list = tc.getData(Sql1, array1);
  202.             /**
  203.              * 取键值 并打印 即为输出的列名 排列
  204.              */
  205.             Map map2 = (Map) list.get(0);
  206.             // 存键值
  207.             Set set2 = map2.keySet();
  208.             Iterator it2 = set2.iterator();
  209.             while (it2.hasNext()) {
  210.                 System.out.print("\\t" + it2.next());
  211.             }
  212.  
  213.             System.out.println();
  214.             //循环取出 每个行的数据
  215.  
  216.             for (Object object : list) {
  217.                 // list里面是map对象
  218.                 Map map = (Map) object;
  219.                 // 存键值
  220.                 Set set = map.keySet();
  221.                 Iterator it = set.iterator();
  222.  
  223.                 while (it.hasNext()) {
  224.                     // 取键值
  225.  
  226.                     Object key = it.next();
  227.  
  228.                     // 输出 map里的数据
  229.  
  230.                     System.out.print("\\t " + map.get(key));
  231.  
  232.                 }
  233.                 System.out.println();
  234.             }
  235.  
  236.             break;
  237.         case 2:
  238.             /**
  239.              * 根据用户输入的员工id进行查询
  240.              */
  241.             System.out.println("输入employeeId:");
  242.             Object object = sc.nextInt();
  243.             Object[] array = { object };
  244.             String Sql2 = "select employeeId,employeeName,email,employeeSalary,departmentId from employee where employeeId =? ";
  245.  
  246.             List list2 = tc.getData(Sql2, array);
  247.            //输出列名
  248.             Map map3 = (Map) list2.get(0);
  249.             // 存键值
  250.             Set set3 = map3.keySet();
  251.             Iterator it3 = set3.iterator();
  252.  
  253.             while (it3.hasNext()) {
  254.                 System.out.print("\\t" + it3.next());
  255.             }
  256.  
  257.             System.out.println();
  258.             //循环输出数据
  259.             for (Object object2 : list2) {
  260.                 // list里面是map对象
  261.                 Map map4 = (Map) object2;
  262.                 // 存键值
  263.                 Set set4 = map4.keySet();
  264.                 Iterator it4 = set4.iterator();
  265.  
  266.                 while (it4.hasNext()) {
  267.                     // 取键值
  268.  
  269.                     Object key = it4.next();
  270.  
  271.                     // 输出 map里的数据
  272.  
  273.                     System.out.print("\\t " + map4.get(key));
  274.                     // System.out.print("\\t"+ map.get(key));
  275.  
  276.                 }
  277.                 System.out.println();
  278.             }
  279.  
  280.             break;
  281.         }
  282.     }
  283.  
  284.     /**
  285.      * 更新方法
  286.      */
  287.     public void update(){
  288.         System.out.print("请输入employeeId:");
  289.         Object id = sc.next();
  290.         System.out.print("请输入想更新的薪水值:");
  291.         Object salary = sc.next();
  292.         //根据用户输入的员工号来修改薪水值并判断是否执行成功
  293.         String sql = "update employee set employeeSalary = ? where  employeeId = ? " ;
  294.         Object [] array =  { salary, id  };
  295.         //使用TestConnection的update方法
  296.         int line =  tc.update(sql, array);
  297.         if(line>0){
  298.             System.out.println("信息更新成功!");
  299.         }
  300.  
  301.     }
  302.     /**
  303.      * 插入方法
  304.      */
  305.     public void insert(){
  306.         System.out.print("请输入employeeId:");
  307.         Object id = sc.next();
  308.         System.out.print("请输入employeeName:");
  309.         Object name = sc.next();
  310.         System.out.print("请输入email:");
  311.         Object email = sc.next();
  312.         System.out.print("请输入employeeSalary:");
  313.         Object salary = sc.next();
  314.         System.out.print("请输入dapartmentId:");
  315.         Object dpId = sc.next();
  316.         Object[] array = {id,name,email,salary,dpId};
  317.         //插入用户输入的数据 并判断是否执行成功
  318.         String sql = "insert into employee values(?,?,?,?,?)";
  319.         int line = tc.update(sql, array);
  320.         if(line>0){
  321.             System.out.println("插入成功!");
  322.         }
  323.     }
  324.  
  325.     /**
  326.      * 删除方法
  327.      */
  328.     public void delete(){
  329.         System.out.print("请输入想删除的员工号:");
  330.         Object id = sc.next();
  331.         Object [] array = {id};
  332.         //删除用户输入 的员工号的数据并判断是否执行成功
  333.         String sql = "delete from employee where employeeId = ? ";
  334.         int line =  tc.update(sql, array);
  335.             if(line>0){
  336.                 System.out.println("删除成功!");
  337.             }
  338.     }
  339.  
  340. }
  341. -----------------------------------------------------------------------------------------
  342.  
  343. import java.util.Iterator;
  344. import java.util.List;
  345. import java.util.Map;
  346. import java.util.Scanner;
  347. import java.util.Set;
  348. /**
  349.  * 测试类
  350.  * @author Administrator
  351.  *
  352.  */
  353. public class Test {
  354.     public static void main(String[] args) {
  355.         //输出选项
  356.       System.out.println("欢迎光临:");
  357.       System.out.println("1:查询");
  358.       System.out.println("2:更新");
  359.       System.out.println("3:插入");
  360.       System.out.println("4:删除");
  361.       System.out.println("5:退出"+"\\n");
  362.       System.out.print("你想干什么?   请选择:");
  363.       //控制台输入
  364.       Scanner sc = new Scanner(System.in);
  365.       //实例化数据操作类Handle
  366.       Handle hd = new Handle();
  367.  
  368.       int type = sc.nextInt();
  369.       /**
  370.        * 判断用户选择操作的项
  371.        */
  372.       switch(type){
  373.       case 1:
  374.           //调用Handle查询方法
  375.           hd.query();
  376.           break;
  377.       case 2:
  378.           //更新
  379.           hd.update();
  380.           break;
  381.       case 3:
  382.           //插入
  383.           hd.insert();
  384.           break;
  385.       case 4:
  386.           //删除
  387.           hd.delete();
  388.           break;
  389.       case 5:
  390.           //退出
  391.           System.out.println("程序退出!");
  392.           System.exit(0);
  393.           break;
  394.       }
  395.  
  396.     }
  397. }
  398. //该片段来自于http://yuncode.net
  399.  

回复 "java 控制台项目 对数据库进行增删改查"

这儿你可以回复上面这条便签

captcha