⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basedao.java

📁 java做的一个选课系统
💻 JAVA
字号:
package db;

import java.sql.*;
import java.util.List;
import java.sql.PreparedStatement;
import java.util.ArrayList; //预状态通道(预编译)

/**
 * <p>Title:操作数据库的通用类 </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
public class Basedao implements DBRes
{
  private Connection conn;
  private Statement st;
  private ResultSet rs;
  private PreparedStatement ps;
  
//  private String url="jdbc:microsoft:sqlserver://192.168.0.8:1433;DatabaseName=netoa";
//  private String username="sa";
//  private String password="";
  public Basedao()
  {
  }
  //负责建立到数据库的连接
  public void getConnection()
  {
    try{
      conn = DriverManager.getConnection(url, username, password);
      //如果是access数据库,下面这句话要去掉
      //conn.setAutoCommit(false);//设定手动提交
    }catch (SQLException ex){
      ex.printStackTrace();
    }
  }
  //负责在连接的基础上建立状态通道
  public void getStatement()
  {
    try{
      if(conn==null||conn.isClosed())
      {
       getConnection();
      }
      st = conn.createStatement();
    }catch(SQLException ex){
      ex.printStackTrace();
    }
  }
  
  
  
  

  //负责执行查询
  public ResultSet doQuery(String sql)
  {
    try{
      this.getStatement();      //这个地方执行该方法表示每执行一个操作之前要重新创建一个通道
      rs = st.executeQuery(sql);
      //st.execute(sql);
      //rs=st.getResultSet();
    }catch (SQLException ex){
      ex.printStackTrace();
    }
    //this.Close();//在内部把关闭rs了
    return rs;
  }
  //负责执行新增(可以执行增删改) insert into dept values(1,'财务部',3,'财务相关工作');
  public boolean doInsert(String sql)
  {
    boolean isCorrect=false;//新增成败的标示
    try{
      this.getStatement();  //这个地方执行该方法表示没执行一个操作之前要重新创建一个通道
      boolean is=st.execute(sql);      //execute可以执行增删改查sql,当执行查询的sql时,该方法返回的是true;如果执行的是增删改,那么返回的false
//      if(is)
//      {
//         rs=st.getResultSet();
//         while(rs.next())
//         {
//            System.out.println(rs.getInt(1)+"---"+rs.getString(2)+"---"+rs.getString(3)+"----"+rs.getInt(4));
//         }
//      }
      System.out.println(is);
      isCorrect=true;
      conn.commit();
    }catch(Exception e){
      e.printStackTrace();
      conn.rollback();
    }finally{
      this.Close();
      return isCorrect;
    }
  }
  //负责执行修改和删除
  public boolean doUpdateOrDelete(String sql)
  {
    boolean isCorrect=false;//修改和删除成败的标示
    try{
       this.getStatement();   //这个地方执行该方法表示没执行一个操作之前要重新创建一个通道
       int i=st.executeUpdate(sql); //executeUpdate可以执行增删改,但不能执行查,该方法返回的是int
       System.out.println(i);
       isCorrect=true;
       conn.commit();
    }catch(Exception e){
       e.printStackTrace();
       conn.rollback();
    }finally{
      this.Close();

      return isCorrect;
    }
  }
  public List getCols(String sql)
  {
    List colslist=new ArrayList();
    rs=doQuery(sql);
    try{
      ResultSetMetaData md=rs.getMetaData();
      int colscount=md.getColumnCount();
      while(rs.next())
      {
        for(int i=1;i<=colscount;i++)
        {
           String value=rs.getString(i);
           colslist.add(value);
        }
      }
    }catch (SQLException ex){
      ex.printStackTrace();
    }
    return colslist;
  }
  //sql批处理(局限于增删改)
  public boolean doBatch(List list)
  {
    boolean isCorrect=false;
    getStatement();                        //这个地方执行该方法表示没执行一个操作之前要重新创建一个通道
    try{
      for(int i = 0; i < list.size(); i++)
      {
        st.addBatch(list.get(i).toString());
      }
      int[] effects = st.executeBatch();
      for(int i=0;i<effects.length;i++)
      {
        System.out.println(effects[i]);
      }
      conn.commit();
      isCorrect=true;
    }catch(Exception e){
      e.printStackTrace();
      conn.rollback();
    }finally{
      this.Close();
      return isCorrect;
    }
//    this.Close();
//    return isCorrect;
  }
  //select yhmc from xtyhb where yhbh=1--select count(*) from xtyhb
//通用得到某个表中总记录数
  //select count(*) from dept
  //select max(deptid) from dept
  public int getIntValue(String sql)
  {
    int count=0;
    try{
     rs=doQuery(sql);
     rs.next();
     count=rs.getInt(1);
    }catch(Exception e){
      e.printStackTrace();
    }
    this.Close();
    return count;
  }
  public String getValue(String sql)
  {
    String value=null;
    try{
      rs=this.doQuery(sql);
      if(rs.next())
      {
       value=rs.getString(1);
      }
    }catch(Exception e){
      e.printStackTrace();
    }
    this.Close();
    return value;
  }
  //得到主键值select max(yhbh) from xtyhb
  public int getPK(String sql)
  {
      int max=0;
      rs=doQuery(sql);
      try{
        if(rs.next())
        {
          max=rs.getInt(1);
        }
      }catch(Exception e){
        e.printStackTrace();
      }
      this.Close();
      return max+1;
  }
  //得到记录字段的值按顺序放到容器中
   public List getColsList(String sql)
   {
      List colslist=new ArrayList();
      ResultSet rs=doQuery(sql);
     try{
        ResultSetMetaData rsmd = rs.getMetaData();//只取相关的数据
       int count=rsmd.getColumnCount();//执行的sql中有几个字段
        while(rs.next())
        {
          for(int i=1;i<=count;i++)
          {
            colslist.add(rs.getString(i));
          }
        }
     }catch(SQLException ex){
       ex.printStackTrace();
     }
     Close();
     return colslist;
   }
  /********************************************************preparedstatement*******************************************/
  public boolean preWrite(String sql,String[] values)
  {
    boolean isCorrect=false;
    try{
      if(conn==null||conn.isClosed())
      this.getConnection();
      ps=conn.prepareStatement(sql);
      for(int i=0;i<values.length;i++)
      {
         ps.setString(i+1,values[i]);
      }
      ps.execute();
      isCorrect=true;
      conn.commit();
    }catch(Exception e){
      e.printStackTrace();
      conn.rollback();
    }finally{
      Close();
      return isCorrect;
    }
  }
  public ResultSet preQuery(String sql,String[] values)
  {
     try{
       if(conn==null||conn.isClosed())
         this.getConnection();
       ps=conn.prepareStatement(sql);
       for(int i=0;i<values.length;i++)
       {
         ps.setString(i+1,values[i]);
       }
       //ResultSet rs=ps.executeQuery();//错误
       rs=ps.executeQuery();
     }catch(Exception e){
        e.printStackTrace();
     }
     return rs;
  }

  public void testPreparedStatment()
  {
    try{
      if(conn==null||conn.isClosed())
        this.getConnection();
      ps=conn.prepareStatement("insert into xtyhb values(?,?,?,?)");
      ps.setString(1,"2");
      ps.setString(2,"ee");
      ps.setString(3,"123456");
      ps.setString(4,"2");
      boolean is=ps.execute();  //可以执行增删改查
      conn.commit();
    }catch(SQLException ex){
      ex.printStackTrace();
      try{
        conn.rollback();
      }catch (SQLException ex1){
        ex1.printStackTrace();
      }
    }
  }


  //关闭资源
  public void Close()
  {
    try{
      if(rs!=null)
      rs.close();//回收资源
      if(st!=null)
      st.close();
      if(ps!=null)
      ps.close();
      if(conn!=null&&!conn.isClosed())
      conn.close();
    }catch (SQLException ex){
       ex.printStackTrace();//
       System.out.println(ex.getMessage());
    }
  }
  static{
     try{
       Class.forName(driver).newInstance();
     }catch(Exception e){
       e.printStackTrace();
     }
  }
  
  public static void main(String[] args) throws Exception{
      Basedao  bc = new Basedao();
      ResultSet rs =bc.doQuery("select * from userinfo");
      while(rs.next())
      {
      	System.out.println(rs.getString(1)+"\t" +rs.getString(2));
      }
      bc.Close();
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -