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) {

    }
}
原文地址:https://www.cnblogs.com/waarp/p/7232460.html