一个jdbc操作类

现在项目中虽然不常使用jdbc了,但jdbc连接数据库配置简单容易,非常适合初学者做练习使用。

 

package datasource;

import java.sql.*;
import java.util.*;


/**
 *
 * jdbc操作类
 * */
public class JdbcUtil
{
 static{
   String driverClassName =
    "oracle.jdbc.driver.OracleDriver";
   try{
       Class.forName(driverClassName);
   }catch(Exception e){
       e.printStackTrace();
   }
 }
   
 public static Connection getConnection(){
     Connection con = null;
  String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
  String userName="scott";
  String pwd="tiger";
     try{
         con = DriverManager.getConnection(url,userName,pwd);
     }catch(Exception e){
         e.printStackTrace();
     }
     return con;
 }

    public static void close(ResultSet rs,
  Statement stmt,Connection con){
    try{
     if(rs!=null) rs.close();
    }catch(Exception e){
        e.printStackTrace();
    }
    try{
     if(stmt!=null) stmt.close();
    }catch(Exception e){
        e.printStackTrace();
    }
    try{
     if(con!=null) con.close();
    }catch(Exception e){
        e.printStackTrace();
    }
 }

    public static void close(Object o){
    try{
      if(o instanceof ResultSet){
     ((ResultSet)o).close();
   }else if(o instanceof Statement){
     ((Statement)o).close();
   }else if(o instanceof Connection){
     ((Connection)o).close();
   }
    }catch(Exception e){
      e.printStackTrace();
    }
 }
   
    /**
     * 打印结果集
     * */
    public static void printResultSet(ResultSet rs){
   StringBuffer sb = new StringBuffer();
   try{
    ResultSetMetaData meta = rs.getMetaData();
       int cols = meta.getColumnCount();
    while(rs.next()){
        for(int i=1;i<=cols;i++){
            sb.append(meta.getColumnName(i)+"=");
         sb.append(rs.getString(i)+"  ");
         }
        sb.append("/n");
    }
    System.out.print(sb.toString());
   }catch(Exception e){
       e.printStackTrace();
   }
 }

 

 /**
  * 可以用来处理增、删、改的方法
  * */
 public static void saveOrUpdateOrDelete(String sql,Object values[]) throws Exception{
  PreparedStatement stmt=null;
  Connection conn=getConnection();
  try {
   stmt=conn.prepareStatement(sql);
   if(values!=null){
    for (int i = 0; i < values.length; i++) {
     stmt.setObject(i+1,values[i]);
    }
   }
   stmt.execute();
   stmt.close();
  } finally {
   close(null,stmt,conn);
  }
 }
 
 
 /**
  * 根据给出的SQL进行查询,并将查询结果放到MAP里面,将拼成List返回
  * */
 public static List query(String sql,Object values[]) throws Exception{
  
  ResultSet rs=null;
  PreparedStatement stmt=null;
  Connection conn= getConnection();
  
  List result=new ArrayList();
  try {
   stmt=conn.prepareStatement(sql);
   if(values!=null){
    for (int i = 0; i < values.length; i++) {
     stmt.setObject(i+1,values[i]);
    }
   }
   rs=stmt.executeQuery();
   ResultSetMetaData meta = rs.getMetaData();
      int columnCount = meta.getColumnCount();
   while(rs.next()){
    Map map=new HashMap();
    for (int i = 0; i < columnCount; i++) {
     String columnName=meta.getColumnName(i+1);
     map.put(columnName, rs.getObject(columnName));
    }
    result.add(map);
   }
  } finally {
   close(rs,stmt,conn);
  } 
  return result;
 }

 


}

 

 

junit测试类如下:

 

import java.io.*;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.net.ftp.*;
import org.junit.Test;

import fileftp.test.ServerDomain;

 

public class TestUtil {
 
 /**
  * 测试jdbc操作
  * @throws Exception
  */
 @Test
 public void testJdbcOpt() throws Exception {
  
  String save=" insert into tn values(?,?) ";
  String update=" update tn set name=? where id=? ";
  String select=" select * from tn"; 
  
  Object values[]=new Object[]{"2","testname2"};
  Object values2[]=new Object[]{"2"};
  
  //打印
  //JdbcUtil.saveOrUpdateOrDelete(update, values2);
  List list=JdbcUtil.query(select, null);
  System.out.println(list);
 }
 
 
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值