• java连接数据库增删改查公共方法


    package dao;
    
    import java.io.IOException;
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Timestamp;
    import java.text.ParsePosition;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    
    import com.fasterxml.jackson.core.JsonParseException;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    public class DBCon {
         private static String DBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
         private static String DBURL="jdbc:sqlserver://localhost:1433;databasename=改为数据库名称";
         private static String DBUID="登录账户";
         private static String DBPWD="登录密码";
         private static Connection conn = null;
         private static Statement stmt = null;
       
       //打开连接
         public static void open() {
             //加载驱动
             try {
                 Class.forName(DBDRIVER);
                 conn=DriverManager.getConnection(DBURL,DBUID,DBPWD);
                 
             } catch (ClassNotFoundException e) {
                 e.printStackTrace();
             } catch (SQLException e) {
                     e.printStackTrace();
             }
         }
         //关闭连接
         public static void close() {
             try {
                 if(stmt!=null)
                         stmt.close();
                 if(conn!=null && !conn.isClosed())
                     conn.close();
             } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
         }
         //得到一个连接对象,当用户使用DBUtil无法解决个性问题时
         //可以通过本方法获得连接对象
         public static Connection getConnection() {
             try {
                 if(conn==null ||conn.isClosed())
                     open();
             } catch (SQLException e) {
                 e.printStackTrace();
             }
             return conn;
         }
         
         //executeQuery
         //executeUpdate
         //execute
         //获得查询的数据集
         //select * from student where name='' and sex=''
         public static ResultSet executeQuery(String sql) {
             try {
                 open();//保证连接是成功的
                 stmt = conn.createStatement();
                 return stmt.executeQuery(sql);
             } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
             return null;
         }
         
         //修改表格内容
         public static int executeUpdate(String sql) {
             int result = 0;
             try {
                 open();//保证连接是成功的
                 stmt = conn.createStatement();
                 result = stmt.executeUpdate(sql);
             } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             } finally {
                 close();
             }
             return result;
         }
         //如果执行的查询或存储过程,会返回多个数据集,或多个执行成功记录数
         //可以调用本方法,返回的结果,
         //是一个List<ResultSet>或List<Integer>集合
         public static Object execute(String sql) {
             boolean b=false;
             try {
                 open();//保证连接是成功的
                 stmt = conn.createStatement();
                 b = stmt.execute(sql);            
                 //true,执行的是一个查询语句,我们可以得到一个数据集
                 //false,执行的是一个修改语句,我们可以得到一个执行成功的记录数
                 if(b){
                     return stmt.getResultSet();
                 }
                 else {
                     return stmt.getUpdateCount();
                 }
             } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             } finally {
                 if(!b) {
                     close();
                 }
             }
             return null;
         }
         
         //
         //select * from student where name=? and sex=?
         public static ResultSet executeQuery(String sql,Object[] in) {
             try {
                 open();//保证连接是成功的
                 PreparedStatement pst = conn.prepareStatement(sql);
                 for(int i=0;i<in.length;i++)
                     pst.setObject(i+1, in[i]);
                 stmt = pst;//只是为了关闭命令对象pst
                 return pst.executeQuery();
             } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
             return null;
         }
         
         public static int executeUpdate(String sql,Object[] in) {
             try {
                 open();//保证连接是成功的
                 PreparedStatement pst = conn.prepareStatement(sql);
                 for(int i=0;i<in.length;i++)
                     pst.setObject(i+1, in[i]);
                 stmt = pst;//只是为了关闭命令对象pst
                 return pst.executeUpdate();
             } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }finally {
                 close();
             }
             return 0;
         }
         public static Object execute(String sql,Object[] in) {
             boolean b=false;
             try {
                 open();//保证连接是成功的
                 PreparedStatement pst = conn.prepareStatement(sql);
                 for(int i=0;i<in.length;i++)
                     pst.setObject(i+1, in[i]);
                 b = pst.execute();
                 //true,执行的是一个查询语句,我们可以得到一个数据集
                 //false,执行的是一个修改语句,我们可以得到一个执行成功的记录数
                 if(b){
                     System.out.println("----");
                     /*List<ResultSet> list = new ArrayList<ResultSet>();
                     list.add(pst.getResultSet());
                     while(pst.getMoreResults()) {
                         list.add(pst.getResultSet());
                     }*/
                     return pst.getResultSet();
                 }
                 else {
                     System.out.println("****");
                     List<Integer> list = new ArrayList<Integer>();
                     list.add(pst.getUpdateCount());
                     while(pst.getMoreResults()) {
                         list.add(pst.getUpdateCount());
                     }
                     return list;
                 }
             } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             } finally {
                 if(!b) {
                     System.out.println("====");
                     close();
                 }
             }
             return null;
         }
         //调用存储过程  proc_Insert(?,?,?)
         public static Object executeProcedure(String procName,Object[] in) {
             open();
             try {
                 procName = "{call "+procName+"(";
                 String link="";
                 for(int i=0;i<in.length;i++) {
                     procName+=link+"?";
                     link=",";
                 }
                 procName+=")}";
                 CallableStatement cstmt = conn.prepareCall(procName);
                 for(int i=0;i<in.length;i++) {
                     cstmt.setObject(i+1, in[i]);
                 }
                 if(cstmt.execute())
                 {
                     return cstmt.getResultSet();
                 }
                 else {
                     return cstmt.getUpdateCount();
                 }
             } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
             
             return null;
         }
         
    
         /*
          * 调用存储过程,并有输出参数
          * @procName ,存储过程名称:proc_Insert(?,?)
          * @in ,输入参数集合
          * @output,输出参数集合
          * @type,输出参数类型集合
          * */
         public static Object executeOutputProcedure(String procName,
                 Object[] in,Object[] output,int[] type){
             Object result = null;
             try {
                 CallableStatement cstmt = conn.prepareCall("{call "+procName+"}");
                 //设置存储过程的参数值
                 int i=0;
                 for(;i<in.length;i++){//设置输入参数
                     cstmt.setObject(i+1, in[i]);
                     //print(i+1);
                 }
                 int len = output.length+i;
                 for(;i<len;i++){//设置输出参数
                     cstmt.registerOutParameter(i+1,type[i-in.length]);
                     //print(i+1);
                 }
                 boolean b = cstmt.execute();
                 //获取输出参数的值
                 for(i=in.length;i<output.length+in.length;i++)
                     output[i-in.length] = cstmt.getObject(i+1);
                 if(b) {
                     result = cstmt.getResultSet();
                 }
                 else {
                     result = cstmt.getUpdateCount();
                 }
             } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
             return result;
         }
         public static String toJson(Object obj){
             String reuqest=null;
             //对象映射
             ObjectMapper mapper=new ObjectMapper();
             //设置时间格式
             SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy年MM月dd日");
             mapper.setDateFormat(dateFormat);
                 try {
                     reuqest=mapper.writeValueAsString(obj);
                 } catch (JsonProcessingException e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
                 }
             return reuqest;
         }
         public static <T> T toObject(String src,Class<T> valueType){
             T request=null;
                 //对象反射
               ObjectMapper mapper=new ObjectMapper();
               try {
                 request=mapper.readValue(src, valueType);
             } catch (JsonParseException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             } catch (JsonMappingException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             } catch (IOException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
             return request;
         }
         public static Date date(String date_str) {
             try {
                 Calendar zcal = Calendar.getInstance();//日期类
                 Timestamp timestampnow = new Timestamp(zcal.getTimeInMillis());//转换成正常的日期格式
                 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");//改为需要的东西
                 ParsePosition pos = new ParsePosition(0);
                 java.util.Date current = formatter.parse(date_str, pos);
                 timestampnow = new Timestamp(current.getTime());
                 return timestampnow;
             }
             catch (NullPointerException e) {
                 return null;
             }
         }
         /**
          * 获取当前时间 yyyy-MM-dd HH:mm:ss
          * @param date
          * @return
          */
         public static String newDate(String date){
             Date day=new Date();    
             SimpleDateFormat df = new SimpleDateFormat(date); 
             return df.format(day); 
         }
        
    }
  • 相关阅读:
    php笔记之数组
    php笔记之函数
    vue笔记之路由
    <QT>:使用QUdpSocket进行UDP通信
    Linux下用ssh在远程Xserver上显示图形界面
    <学习QT>在QListWidget中实现每个单元项显示文字在上图片在下
    const限定符以及顶层const和底层const的理解
    了解X window以及相关知识
    Linux下使用Eclipse C/C++生成创建并调用动态库(.so)
    Linux下搭载Xwindow(Xlib)开发环境
  • 原文地址:https://www.cnblogs.com/weibanggang/p/9207891.html
Copyright © 2020-2023  润新知