利用javaBean運算元據庫表及其子段 (轉)
我在大三的時候寫過一個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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 運算元據庫表
- 利用 Sequelize 來運算元據庫
- 運算元據庫
- Go語言運算元據庫及其常規操作Go
- yii運算元據庫
- Mysqli運算元據庫MySql
- DDL:運算元據庫
- jmeter運算元據庫JMeter
- ecshop運算元據庫類
- PHP mysqli 運算元據庫PHPMySql
- java 運算元據庫備份Java
- Python運算元據庫(3)Python
- perl協程運算元據庫
- Go語言運算元據庫Go
- 求助 liferay運算元據庫
- Python學習:運算元據庫Python
- Django在Ubuntu下運算元據庫DjangoUbuntu
- go 語言運算元據庫 CRUDGo
- JDBC運算元據庫基本步驟JDBC
- [python] 基於Dataset庫運算元據庫Python
- Android中使用LitePal運算元據庫Android
- 資料庫誤運算元據恢復資料庫
- 肖sir__jmeter之運算元據庫JMeter
- MySQL DML運算元據MySql
- python運算元據Python
- 利用版本回退實現誤運算元據恢復
- lavavel 中運算元據庫查詢別名
- 教你如何用python運算元據庫mysql!!PythonMySql
- 使用WordPress中的wpdb類運算元據庫
- ASP.Net中用DataGrid運算元據庫ASP.NET
- 非常有用的jdbc的運算元據庫JDBC
- Oracle OCP(10):運算元據Oracle
- 如何讓Designer更好地運算元據庫物件物件
- uniapp單機軟體運算元據庫(安卓)APP安卓
- python運算元據庫,批量插入資料庫資料Python資料庫
- JAVA 使用雜湊表運算元據庫的例子 Using Hashtables to Store & Extract results from a Database. (轉)JavaDatabase
- 好程式設計師分享DDL之運算元據庫程式設計師
- spring-boot-route(七)整合jdbcTemplate運算元據庫SpringbootJDBC