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

📄 result.java

📁 一个可以在applet窗体上持行sql语句并显示返回结果的程序
💻 JAVA
字号:
/*
 * Result.java
 */

package org.hsql;
import java.sql.SQLException;
import java.io.*;

class Result {
  private Record rTail;
  private int iSize;
  private int iColumnCount;
  final static int UPDATECOUNT=0,ERROR=1,DATA=2;
  int iMode;
  String sError;
  int iUpdateCount;
  Record rRoot;
  String sLabel[];
  String sTable[];
  String sName[];
  int iType[];

  Result() {
    iMode=UPDATECOUNT;
    iUpdateCount=0;
  }
  Result(String error) {
    iMode=ERROR;
    sError=error;
  }
  Result(int columns) {
    prepareData(columns);
    iColumnCount=columns;
  }
  int getSize() {
    return iSize;
  }
  void setColumnCount(int columns) {
    iColumnCount=columns;
  }
  int getColumnCount() {
    return iColumnCount;
  }
  void append(Result a) {
    if(rRoot==null) {
      rRoot=a.rRoot;
    } else {
      rTail.next=a.rRoot;
    }
    rTail=a.rTail;
    iSize+=a.iSize;
  }
  void add(Object d[]) {
    Record r=new Record();
    r.data=d;
    if(rRoot==null) {
      rRoot=r;
    } else {
      rTail.next=r;
    }
    rTail=r;
    iSize++;
  }
  Result(byte b[]) throws SQLException {
    ByteArrayInputStream bin=new ByteArrayInputStream(b);
    DataInputStream in=new DataInputStream(bin);
    try {
      iMode=in.readInt();
      if(iMode==ERROR) {
        throw Trace.getError(in.readUTF());
      } else if(iMode==UPDATECOUNT) {
        iUpdateCount=in.readInt();
      } else if(iMode==DATA) {
        int l=in.readInt();
        prepareData(l);
        iColumnCount=l;
        for(int i=0;i<l;i++) {
          iType[i]=in.readInt();
          sLabel[i]=in.readUTF();
          sTable[i]=in.readUTF();
          sName[i]=in.readUTF();
        }
        while(in.available()!=0) {
          add(Column.readData(in,l));
        }
      }
    } catch(IOException e) {
      Trace.error(Trace.TRANSFER_CORRUPTED);
    }
  }
  byte[] getBytes() throws SQLException {
    ByteArrayOutputStream bout=new ByteArrayOutputStream();
    DataOutputStream out=new DataOutputStream(bout);
    try {
      out.writeInt(iMode);
      if(iMode==UPDATECOUNT) {
        out.writeInt(iUpdateCount);
      } else if(iMode==ERROR) {
        out.writeUTF(sError);
      } else {
        int l=iColumnCount;
        out.writeInt(l);
        Record n=rRoot;
        for(int i=0;i<l;i++) {
          out.writeInt(iType[i]);
          out.writeUTF(sLabel[i]);
          out.writeUTF(sTable[i]);
          out.writeUTF(sName[i]);
        }
        while(n!=null) {
          Column.writeData(out,l,iType,n.data);
          n=n.next;
        }
      }
      return bout.toByteArray();
    } catch(IOException e) {
      throw Trace.error(Trace.TRANSFER_CORRUPTED);
    }
  }
  private void prepareData(int columns) {
    iMode=DATA;
    sLabel=new String[columns];
    sTable=new String[columns];
    sName=new String[columns];
    iType=new int[columns];
  }
}

⌨️ 快捷键说明

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