我在大三的时候写过一个javabean,可以实现连接数据库,对表的操作,以及对其中的字段值经过字符串运算后提取新的SQL条件,我现在拿出来与大家共享。 
dbBean.java//连接数据库SQL Server2000 
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.jdbc.odbc.JdbcOdbcDriver");       }   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 rowscount=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_WebPurview表,它有两个字段,一个f_UserName,一个f_SearchPurview, 
这个标注要是纪录用户查询的条件,然后我要加上必需的条件后,形成真正的SQL语句,这就是一个字符串操作。 
package StringOP; 
import java.lang.*; import java.util.*; import java.sql.*; 
import pub.*; 
public class GetSQL{       public  String rsAr;              file://档案文件必须要满足的条件       public  String rsFile;             file://普通文件必须要满足的条件              public  String rsSql = "";//读取得SQL语句       public  String rsAddAr = "";       file://档案附加的条件       public  String rsAddFile = "";     file://普通附加的条件       public  ResultSet dbRs;                    public GetSQL(String s){            int i = 0;        file://String Index            int IsOver = 0;   file://Is String Over?            String sql = " ";                            file://连接数据库             dbBean dbConn = new dbBean();                           file://初始化rsAr,rsFile             rsFile = "SELECT * 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+"' ";                         file://从数据库中读取用户条件,初始化rsSql             try {                      dbRs = dbConn.executeQuery(sql);        file://这里只能有一条纪录                 if (dbRs!=null && dbRs.next())                 rsSql = dbRs.getString("f_SearchPurview");                 } catch(Exception e) {                           e.printStackTrace();                                      }                                                            file://分离rsAddAr和rsAddFile            if (rsSql == ""){                   System.out.println("用户自定义条件为空或是没有满足条件的纪录!");                   }             else{                while ((IsOver == 0)){                      if ((i <= rsSql.length()-5)&&(rsSql.charAt(i) == 'A')){                 file://当前为档案                 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;                           }                           }                                  file://System.out.println(rsSql.charAt(i));                    }                   else if ((i <= rsSql.length()-5)&&(rsSql.charAt(i) == 'F')){                         file://当前为文件                                         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(){            file://得到档案字符串,对rsAr和rsAddAr的操作                        String tempAr = "";            String tempAdd = "";            int IndexAr = 0;      file://rsAr上的位置            int INdexAdd = 0 ;    file://rsAddAr上的位置            int IsFirst = 0;                        file://找到rsAr的条件的地方            while((rsAr.charAt(IndexAr) != '(')&&(IndexAr <= rsAr.length()-1)){               tempAr = tempAr + rsAr.charAt(IndexAr);               IndexAr++;             }           file://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;              file://System.out.println(tempAdd);                  } file://分离出了用户的一个条件             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 = "";                }                         }//用户的条件都结束了                         file://将rsAr中的条件加上;            while((IndexAr <= rsAr.length()-1)&&(rsAr.charAt(IndexAr) != ';')){             tempAr = tempAr + rsAr.charAt(IndexAr);             ++IndexAr;        }             tempAr = tempAr + ';';            file://System.out.println(tempAr);            return tempAr;       }                public String GetUserFileSQL(){            file://得到文件字符串,对rsFile和rsAddFile的操作                        String tempFile = "";            String tempAdd = "";            int IndexFile = 0;      file://rsAr上的位置            int INdexAdd = 0 ;    file://rsAddAr上的位置            int IsFirst = 0;                        file://找到rsAr的条件的地方            while((rsFile.charAt(IndexFile) != '(')&&(IndexFile <= rsFile.length()-1)){               tempFile = tempFile + rsFile.charAt(IndexFile);               IndexFile++;             }           file://IndexAr现在指在了第一个(的地方                         tempFile = tempFile + " ";                                   while((INdexAdd <= rsAddFile.length()-1)&&(rsAddFile.charAt(INdexAdd) != '!')){             while((INdexAdd <= rsAddFile.length()-1)&&(rsAddFile.charAt(INdexAdd)!= ';')){              tempAdd = tempAdd + rsAddFile.charAt(INdexAdd);              ++INdexAdd;              file://System.out.println(tempAdd);                  } file://分离出了用户的一个条件             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 = "";                }                         }//用户的条件都结束了                         file://将rsAr中的条件加上;            while((IndexFile <= rsFile.length()-1)&&(rsFile.charAt(IndexFile) != ';')){             tempFile = tempFile + rsFile.charAt(IndexFile);             ++IndexFile;        }             tempFile = tempFile + ';';            file://System.out.println(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);                }*/ } 
好了,全部代码,jdk下测试通过  
 
  |