利用javaBean運算元據庫表及其子段 (轉)

gugu99發表於2007-08-15
利用javaBean運算元據庫表及其子段 (轉)[@more@]

我在大三的時候寫過一個bean,可以實現連線,對錶的操作,以及對其中的欄位值經過字串運算後提取新的條件,我現在拿出來與大家共享。

Bean.java//連線資料庫2000

package pub;
import java.sql.*;
import java.io.*;
import java.util.*;
 
public class dbBean {
 
 public Connection conn = null;
 public Statement stmt = null;
 public ResultSet rs = null;

 public dbBean() {
  try {
 Class.forName("sun..odbc.JdbcOdbc");
  }
  catch (ClassNotFoundException e) {
  System.err.println("OpenDB():"+e.getMessage());
  }
  }
 public ResultSet executeQuery(String sql) {
  try {
 conn=DriverManager.getConnection("jdbc:odbc:KMHXBY","sa","");
 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  rs = stmt.executeQuery(sql);//execute sql
  }
  catch (java.sql.SQLException e) {
  System.err.println("OpenDB.executeQuery():"+e.getMessage());
  }
  return rs;
  }
 public int executeUpdate(String sql) {
  int rowunt=0;
  try {
 conn=DriverManager.getConnection("jdbc:odbc:foxv21","sa","");
 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  rowscount = stmt.executeUpdate(sql);//execute sql
  }
  catch (java.sql.SQLException e) {
  System.err.println("OpenDB.executeUpdate():"+e.getMessage());
    }
  return rowscount;
  }
 public void destroy() {
  try {
 stmt.close();
  conn.close();
  }
  catch(Exception e) {
  System.err.println("DBOperate.destroy():"+e.getMessage());
  }
  }
  }

GetSQL.java

//操作foa_Purview表,它有兩個欄位,一個f_UserName,一個f_SearchPurview,

這個標註要是紀錄查詢的條件,然後我要加上必需的條件後,形成真正的SQL語句,這就是一個字串操作。

package StringOP;

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

import pub.*;

public class GetSQL{
  public  String rsAr;  案必須要滿足的條件
  public  String rile;  通檔案必須要滿足的條件
 
  public  String rsSql = "";//讀取得SQL語句
  public  String rsAddAr = "";  案附加的條件
  public  String rsAddFile = "";  通附加的條件
  public  ResultSet dbRs;
   
  public GetSQL(String s){
    int i = 0;  Index
    int IsOver = 0;  String Over?
    String sql = " ";
 
  接資料庫
  dbBean dbConn = new dbBean();
 
  始化rsAr,rsFile
  rsFile = " * FROM foa_WJ WHERE (((f_Status <>  '已移交') AND (f_Status <>  '已歸檔')) OR (f_Status IS NULL)) AND ((F_MarkDel<>1) OR (f_MarkDel IS NULL)) Order By f_JNSXH";
  rsAr  = "SELECT * FROM foa_WJ WHERE (f_Status = '已歸檔') AND ((fcSys_MID > 0) AND (NOT fcSys_MID IS NULL)) AND ((F_MarkDel<>1) OR (f_MarkDel IS NULL)) ORDER BY f_JNSXH";
 
  sql = "select * from foa_WebPurView where f_UserName = '"+s+"' ";
 
  資料庫中讀取使用者條件,初始化rsSql
  try { 
  dbRs = dbConn.executeQuery(sql);  裡只能有一條紀錄
  if (dbRs!=null && dbRs.next())
  rsSql = dbRs.getString("f_SearchPurview");
  } catch(Exception e) {
  e.printStackTrace();
  }
 
 
 
  離rsAddAr和rsAddFile
  if (rsSql == ""){
    System.out.println("使用者自定義條件為空或是沒有滿足條件的紀錄!");
    }
  else{
  while ((IsOver == 0)){ 
    if ((i <= rsSql.length()-5)&&(rsSql.charAt(i) == 'A')){
     前為檔案
     i = i + 1;
     while((i <= rsSql.length()-5)&&(rsSql.charAt(i) !='~')){
  while((i <= rsSql.length()-5)&&(rsSql.charAt(i) != ':')){
   ++i;
  }
  if((i <= rsSql.length()-5)&&(rsSql.charAt(i) == ':')){
   i = i + 1;
   while((i <= rsSql.length()-1)&&(rsSql.charAt(i) !='~')){
   rsAddAr = rsAddAr + rsSql.charAt(i);
   ++i;
   }
   
  }
  }
  if(rsSql.charAt(i) == '~'){
   i = i + 4;
   if(i == rsSql.length()){
   IsOver = 1;
   
   continue;
   }
   else{
    ++i;
    continue;
   }
   }
 
  (rsSql.charAt(i));
  }
  else if ((i <= rsSql.length()-5)&&(rsSql.charAt(i) == 'F')){
  前為檔案
     i = i + 1;
     while((i <= rsSql.length()-5)&&(rsSql.charAt(i) !='~')){
  while((i <= rsSql.length()-5)&&(rsSql.charAt(i) != ':')){
   ++i;
  }
  if((i <= rsSql.length()-5)&&(rsSql.charAt(i) == ':')){
   i = i + 1;
   while((i <= rsSql.length()-1)&&(rsSql.charAt(i) !='~')){
   rsAddFile = rsAddFile + rsSql.charAt(i);
   ++i;
   }
   
  }
  }
  if(rsSql.charAt(i) == '~'){
   i = i + 4;
   if(i == rsSql.length()){
   IsOver = 1;
   
   continue;
   }
   else{
    ++i;
    continue;
   }
   }
     }
 
  rsAddAr = rsAddAr + ";" + "!"; 
  rsAddFile = rsAddFile +";" +"!";
  break;
  } 
}
 
}
  public String GetArchiveSQL(){
    到檔案字串,對rsAr和rsAddAr的操作
   
    String tempAr = "";
    String tempAdd = "";
    int IndexAr = 0;  上的位置
    int INdexAdd = 0 ;  上的位置
    int IsFirst = 0;
   
    到rsAr的條件的地方
    while((rsAr.charAt(IndexAr) != '(')&&(IndexAr <= rsAr.length()-1)){
      tempAr = tempAr + rsAr.charAt(IndexAr);
      IndexAr++;
     }  現在指在了第一個(的地方
     
    tempAr = tempAr + " ";
   
   
    while((INdexAdd <= rsAddAr.length()-1)&&(rsAddAr.charAt(INdexAdd) != '!')){
     while((INdexAdd <= rsAddAr.length()-1)&&(rsAddAr.charAt(INdexAdd) != ';')){
     tempAdd = tempAdd + rsAddAr.charAt(INdexAdd);
     ++INdexAdd;
     (tempAdd);
      } 離出了使用者的一個條件
     if((INdexAdd <= rsAddAr.length()-1)&&(rsAddAr.charAt(INdexAdd) == ';')){
       INdexAdd = INdexAdd + 1;
       if(IsFirst == 0){
        tempAr = tempAr  + tempAdd + " "+ "AND" + " ";
        IsFirst = 1;
       }
      else{
      tempAr = tempAr  + tempAdd + " "+"AND" +" ";
      }
      tempAdd = "";
      }
   
     }//使用者的條件都結束了
     
    rsAr中的條件加上;
    while((IndexAr <= rsAr.length()-1)&&(rsAr.charAt(IndexAr) != ';')){
     tempAr = tempAr + rsAr.charAt(IndexAr);
     ++IndexAr;
   }
    tempAr = tempAr + ';';
    (tempAr);
    return tempAr;
  }
 
  public String GetUserFileSQL(){
    到檔案字串,對rsFile和rsAddFile的操作
   
    String tempFile = "";
    String tempAdd = "";
    int IndexFile = 0;  上的位置
    int INdexAdd = 0 ;  上的位置
    int IsFirst = 0;
   
    到rsAr的條件的地方
    while((rsFile.charAt(IndexFile) != '(')&&(IndexFile <= rsFile.length()-1)){
      tempFile = tempFile + rsFile.charAt(IndexFile);
      IndexFile++;
     }  現在指在了第一個(的地方
     
    tempFile = tempFile + " ";
   
   
    while((INdexAdd <= rsAddFile.length()-1)&&(rsAddFile.charAt(INdexAdd) != '!')){
     while((INdexAdd <= rsAddFile.length()-1)&&(rsAddFile.charAt(INdexAdd)!= ';')){
     tempAdd = tempAdd + rsAddFile.charAt(INdexAdd);
     ++INdexAdd;
     (tempAdd);
      } 離出了使用者的一個條件
     if((INdexAdd <= rsAddFile.length()-1)&&(rsAddFile.charAt(INdexAdd) == ';')){
       INdexAdd = INdexAdd + 1;
       if(IsFirst == 0){
        tempFile = tempFile  + tempAdd + " "+ "AND" + " ";
        IsFirst = 1;
       }
      else{
      tempFile = tempFile  + tempAdd + " "+"AND" +" ";
      }
      tempAdd = "";
      }
   
     }//使用者的條件都結束了
     
    rsAr中的條件加上;
    while((IndexFile <= rsFile.length()-1)&&(rsFile.charAt(IndexFile) != ';')){
     tempFile = tempFile + rsFile.charAt(IndexFile);
     ++IndexFile;
   }
    tempFile = tempFile + ';';
    (tempFile);
    return tempFile;
  } 
 
  /*public static void main(String[] args){
   String s = "";
   String ss = "";
   GetSQL aa = new GetSQL(s);
   s= aa.GetArchiveSQL();
   ss = aa.GetUserFileSQL();
   System.out.println(s);
   System.out.println(ss);
   
   }*/
}

好了,全部程式碼,下測試透過


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-959382/,如需轉載,請註明出處,否則將追究法律責任。

相關文章