zoukankan      html  css  js  c++  java
  • Java连接数据库,增删改查

    底层代码:

    package com.zdsoft;
    
    import java.sql.*;
    
    /**
     * Created by lx on 2017/6/22.
     */
    public class JDBCUtil {
        private static JDBCUtil jdbcUtil;
        //驱动路径
        private  static  String DRIVER="com.mysql.jdbc.Driver";
        //数据库的连接路径
        private  static  String URL="jdbc:mysql://localhost:3306/test";
        //用户名
        private  static  String  userName="root";
        //密码
        private  static String  passWord="123456";
        private  Connection connection;
        private  PreparedStatement statement;
        ResultSet resultSet;
        /**
         * 加载驱动*/
        static {
            try {
                Class.forName(DRIVER);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        /**
         * 私有化构造器*/
        private  JDBCUtil(){
    
        }
        /**
         * 双重检索单例*/
        public  static JDBCUtil getInstance(){
            if (jdbcUtil==null){
                synchronized (JDBCUtil.class){
                    if (jdbcUtil==null){
                        jdbcUtil=new JDBCUtil();
                    }
                }
            }
            return  jdbcUtil;
        }
    
        /**
         * 用来做增删改操作的方法
         * @param sql String类型sql语句
         * @param args Object类型可变长度参数
         * @return int 类型等于-1添加失败,大于0 添加成功
         */
        public  int  update(String sql ,Object...args){
            int count=-1;
          //打开数据库连接
            getConnection();
            try {
                //创建预加载对象
                statement=connection.prepareStatement(sql);
                if (args!=null){
                    for (int i=0;i<args.length;i++){
                        statement.setObject(i+1,args[i]);
                    }
                }
                //执行sql语句
                count=statement.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
                cloes();
                return count;
            }
            cloes();
            return count;
        }
    
        /**
         *  查询通用操作方法
         * @param sql  String 类型 本次操作的sql语句
         * @param args Object 类型 可变长度的参数
         * @return 返回resultset 类型 结果集 如出现异常则返回 null
         */
        public ResultSet query(String sql,Object...args){
            //打开连接
             getConnection();
            try {
                //创建sql操作对象
                statement=connection.prepareStatement(sql);
                if (args!=null){
                    for (int i=0;i<args.length;i++){
                        //给占位符赋值
                         statement.setObject(i+1,args[i]);
                    }
                    //执行sql语句
                   resultSet= statement.executeQuery();
                }
            } catch (SQLException e) {
                e.printStackTrace();
                cloes();
                return  null;
            }
            return  resultSet;
        }
        /**
         * 打开连接的方法*/
        public void  getConnection(){
            try {
                    connection=DriverManager.getConnection(URL,userName,passWord);
                } catch (SQLException e) {
                    e.printStackTrace();
            }
        }
        public  void cloes(){
            if (resultSet!=null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }finally {
                    if (statement!=null){
                        try {
                            statement.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }finally {
                            if (connection!=null){
                                try {
                                    connection.close();
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    业务逻辑层

     1 package com.zdsoft;
     2 
     3 import java.sql.*;
     4 import java.util.ArrayList;
     5 import java.util.HashMap;
     6 import java.util.List;
     7 import java.util.Map;
     8 
     9 /**
    10  * Created by lx on 2017/6/22.
    11  */
    12 public class StudentService {
    13     /**
    14      *
    15      * @param stu_code 学号
    16      * @param stu_name 姓名
    17      * @param stu_sex  年龄
    18      * @param birthday 生日
    19      * @param classid 班级编号
    20      * @return int 类型等于-1添加失败,大于0 添加成功
    21      */
    22      public int addStudent(int stu_code,String stu_name,String stu_sex,String birthday,int classid){
    23          String sql="insert into student(stu_code,stu_name,stu_sex,birthday,stu_calssid) values(?,?,?,?,?)";
    24          return JDBCUtil.getInstance().update(sql,stu_code,stu_name,stu_sex,birthday,classid);
    25      }
    26 
    27     /**
    28      *根据姓名查询信息的方法
    29      * @param name 姓名
    30      * @return ArrayList 类型 结果集 如出现异常则返回 null
    31      */
    32 
    33      public  List<Map> getStuInfo(String name){
    34          List<Map> list=new ArrayList<Map>();
    35          ResultSet set=null;
    36         //创建sql语句
    37          String sql="select * from student where stu_name=?";
    38          set=JDBCUtil.getInstance().query(sql,name);
    39          return  resultPull(set);
    40      }
    41    /**
    42     * 负责解析任何结果的方法*/
    43    private List<Map> resultPull(ResultSet resultSet){
    44        //利用结果集获取resultMateData的实例
    45        List<Map> list=new ArrayList<Map>();
    46        Map hashMap;
    47        try {
    48            ResultSetMetaData metaData=resultSet.getMetaData();
    49            //获取要解析的数据总共有多少列
    50            int count=metaData.getColumnCount();
    51            while (resultSet.next()){
    52                    hashMap=new HashMap();
    53                for (int i=1;i<=count;i++){
    54                   hashMap.put(metaData.getColumnName(i),resultSet.getObject(i));
    55                }
    56                list.add(hashMap);
    57            }
    58        } catch (SQLException e) {
    59            e.printStackTrace();
    60            return  null;
    61        }
    62       return  list;
    63    }
    64 
    65 }
    StudentService.java

    查询层:

    package com.zdsoft;
    
    import javax.xml.parsers.DocumentBuilderFactory;
    import java.sql.*;
    import java.util.List;
    import java.util.Map;
    
    /**
     * Created by lx on 2017/6/22.
     */
    public class DemoDB {
        public static void main(String[] args) {
          StudentService studentService=new StudentService();
          List<Map> list=studentService.getStuInfo("刘德华");
        }
    }

    测试:

    package com.zdsoft;
    
    /**
     * Created by lx on 2017/6/23.
     */
    public class Test {
        public static void main(String[] args) {
    
        }
    }
  • 相关阅读:
    HDU 2955 Robberies(01背包)
    HDU 2602 Bone Collector(01背包)
    HUST 1352 Repetitions of Substrings(字符串)
    HUST 1358 Uiwurerirexb jeqvad(模拟解密)
    HUST 1404 Hamming Distance(字符串)
    HDU 4520 小Q系列故事――最佳裁判(STL)
    HDU 2058 The sum problem(枚举)
    【破解】修改程序版权、添加弹窗
    HDU 1407 测试你是否和LTC水平一样高(枚举)
    HDU 1050 Moving Tables(贪心)
  • 原文地址:https://www.cnblogs.com/waarp/p/7232460.html
Copyright © 2011-2022 走看看