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) {
    
        }
    }
  • 相关阅读:
    python网络爬虫之使用scrapy自动爬取多个网页
    流畅的python学习笔记:第五章
    python cookbook第三版学习笔记 一
    python网络爬虫之scrapy 调试以及爬取网页
    python网络爬虫之scrapy 工程创建以及原理介绍
    流畅的python学习笔记:第三章
    python网络爬虫之LXML与HTMLParser
    python 解析docx文档的方法,以及利用Python从docx文档提取插入的文本对象和图片
    【原创】大数据基础之Drill(2)Drill1.14+Hive2.1.1运行
    【原创】大叔问题定位分享(12)Spark保存文本类型文件(text、csv、json等)到hdfs时为什么是压缩格式的
  • 原文地址:https://www.cnblogs.com/waarp/p/7232460.html
Copyright © 2011-2022 走看看