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

📄 generaldao.java

📁 一个网络告警
💻 JAVA
字号:
package quanquanqi;	
import java.sql.*;
import javax.sql.*;//JDBC  API
//import javax.naming.*;
import java.util.*;//提供collection类的访问
import java.io.*;

public class GeneralDAO
{
  Connection con;
  Statement stmt;
  ResultSet resultSet;
  ResultSetMetaData resultMD;
  
  public GeneralAggregateVO gvo = new GeneralAggregateVO();
//------------------------------------------------------------------------------
  //构造函数:
  public GeneralDAO() {
    this("mining1"); //以默认AlarmsTable构造GeneralDAO对象
  }
//-----------------
  public GeneralDAO(String datasourceName) {
    try {
      String url =  "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+ datasourceName;
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     con = DriverManager.getConnection(url, "", "");
     System.out.println("Succees ");
    }
    catch (SQLException e) {
      System.out.println("SQLException in GeneralDAO: ");
      e.printStackTrace();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
//------------------------------------------------------------------------------
  public void executeQuery( String query ) throws SQLException
   {//执行查询并储存结果到local ResultSet
    System.out.println("Preparing and executing query ...");
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    resultSet     =stmt.executeQuery(query);
    resultMD      =resultSet.getMetaData();
    System.out.println("Loading results ...");
    loadResults();//gvo包含了已执行的数据访问对象的查询结果
   }
 //------------------------------------------------------------------------------
  public String getQuery( String fn )
  {//从文件fn中读取查询字符串,并返回
    String buffer = null; //数据缓冲区
    String retval = null; //返回查询字串
    try
    {
      BufferedReader reader = new BufferedReader(new FileReader(fn));//打开文件
      buffer =reader.readLine();//读文件第一行
      while( buffer!=null )
      {
        if (retval == null)
          retval = buffer;
        else
          retval += buffer;//append
        buffer = reader.readLine();//继续读文件
      }
      reader.close();
    }
    catch (FileNotFoundException e)
      {
        System.out.println("FileNotFoundException in getQuery: " + e.getMessage());
      }
    catch (IOException e)
      {
        System.out.println("IOException in getQuery: "+ e.getMessage());
      }
    finally
     { return  retval;}
  }
//------------------------------------------------------------------------------
  public void setAggregateVO()  throws SQLException//该方法将内部ResultSet对象设置为内部聚合值对象的值
  {//同步ResultSet对象与内部聚合值对象(gvo).ResultSet用来更新数据库,将gvo的更新反映到ResultSet对象上
    for (int n = 0; n < gvo.getRowCount(); n++)//行遍历
    {
      gvo.absolute(n);//定位gvo行, gvo行号从0开始//聚合值的行号从0开始,而resultset的行号从1开始
      if (gvo.getUpdateStatus( n ))//判断该行是否更新
       { resultSet.absolute( n+1 );//定位resultSet的相应行,resultSet行号从1开始
        for ( int z=0; z < gvo.getColumnCount(); z++)//列遍历
         {
           resultSet.updateObject((z+1),gvo.getObject(z));//更新resultSet该行各列元素
         }
       }//if
    }//for n
  }
//------------------------------------------------------------------------------
  public void loadAggregateVO( GeneralAggregateVO gvo)  throws SQLException
  {//将数据访问对象(GeneralDAO)和作为参数传入的聚合值对象(gvo)的值同步起来
    this.gvo= gvo;
    setAggregateVO();//使内部ResultSet与内部聚合值对象的值同步
  }
//------------------------------------------------------------------------------
  public void deleteRow (int row ) throws SQLException
  {//从内部ResultSet中删除指定行,输入参数采用从0计数的方法
    resultSet.absolute(row + 1);
    resultSet.deleteRow();
  }
//------------------------------------------------------------------------------
  public void applyUpdates() throws SQLException
  {//读取gvo中的更新.并用内部ResultSet的updateable ResultSet特性将更新应用于数据库
    for (int n=0; n < gvo.getRowCount(); n++)//行遍历
    {
      gvo.absolute(n);//定位行
      resultSet.absolute(n + 1);//定位相应行
     //分insert与update操作
      if (gvo.getInsertStatus(n))//是否需要插入
       {
        resultSet.moveToInsertRow();
       }
      if (gvo.getUpdateStatus(n))//是否需要更新(包括update与insert)
      {
        for(int z=0; z < gvo.getColumnCount(); z++)//列遍历
         {
          if (gvo.getUpdateStatus(n,z))//该列更新?
               resultSet.updateObject( (z+1),gvo.getObject(z));//更新该列
         }//for z
         if (gvo.getInsertStatus(n))//该列插入?
               resultSet.insertRow();//插入该列到数据库
         else
               resultSet.updateRow();//更新该列到数据库
      }
    }
  }//for n
//------------------------------------------------------------------------------
    public void loadResults(ResultSet rs) throws SQLException
  {//将内部ResultSet的结果装载到内部GeneralAggregateVO对象中
    gvo.clear();//清除内部聚合值对象的内容
    for (int c=1; c <= resultMD.getColumnCount();c++)//收集ResultSet中的列标签
       gvo.setColKey( resultMD.getColumnLabel( c ),(c-1));//列标签和列号
    while ( rs.next())//行遍历
    {
      for (int n = 1; n <= resultMD.getColumnCount(); n++)
        //JDBCTypeMapper.getColumnDataString()实现数据类型转换(转换至String类)
        gvo.addObject(JDBCTypeMapper.getColumnDataString(n, rs));
      gvo.addRow();
    }
  }
  public void loadResults() throws SQLException//重载
    {
      loadResults( resultSet );
    }
//------------------------------------------------------------------------------
  public void clearUpdates()
  {//清除聚合值对象的更新标志,不对数据库做任何操作
    gvo.clearUpdates();
  }
//------------------------------------------------------------------------------
  public GeneralAggregateVO getGeneralAggregateVO()
  {//返回GeneralDAO实例的聚合值对象的内部引用
    return gvo;
  }
}




⌨️ 快捷键说明

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