本文共 6094 字,大约阅读时间需要 20 分钟。
我在大三的时候写过一个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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10748419/viewspace-959382/