亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? matchselectbean.java

?? 用于按照xml文件配置直接生成SQL腳本文件
?? JAVA
字號:
//匹配查詢的xml配置解析器
//數(shù)據(jù)庫bean管理

package find;


import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.ServletException;
import javax.servlet.RequestDispatcher;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Properties;

import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.SAXException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.net.URL;
import java.net.URLDecoder;
import java.io.File;


public class MatchSelectBean extends DefaultHandler{
	
	//private String currentSet;
	//private String currentName;
	private int step;//用于xml元素解析步驟
	
	private StringBuffer currentValue = new StringBuffer();
	
	//匹配值
	private String matchString;//匹配查詢所需要的字符串
	
	private String sql;//sql語句
	private String title;//頁面標(biāo)題
	private String matchColumn;//匹配列
	private String hide;//隱藏列
	private int iMatch;//匹配列的標(biāo)號
	private int iHide;//隱藏列的標(biāo)號
	private int iRSCol;//結(jié)果集的column數(shù)
	private String label;//標(biāo)題名
	private String[] labels;//
	private int p_label;//指針
	private int pX;
	private int pY;
	private String column;//列名
//	private String[][] value;//
//	private String[] hideValue;//隱藏值
	private String back;//返回組件
	private String xmlFile;//xml配置文件路徑
	
	//jsp表現(xiàn)層用
	private int iCol;//頁面上表格的column數(shù)
	private int iLine;//頁面上表格的行數(shù)
	private String hideValue;//隱藏列的值;
	private String matchValue;//匹配列的值;
	private boolean noResult = false;//沒有結(jié)果
	
	private Connection conn;
	private PreparedStatement stmt;
	private ResultSet rs;
	private ResultSetMetaData rsmd;
	
	
	public MatchSelectBean(){
		this.clear();
	}
	
	//清空
	public void clear(){
		this.step = 1;
		this.label = "";
		this.column = "";
	}
	
	//get和set方法
	
	public String getMatchString(){
		return this.matchString;
	}
	
	public void setMatchString(String s){
		this.matchString = s.replaceAll("'","_");
		
	}

	public String getSql(){
		return this.sql;
	}
	
	public void setSql(String s){
		this.sql = s;
	}
	
	public String getXmlFile(){
		return this.xmlFile;
	}
	
	public void setXmlFile(String s){
		this.xmlFile = s;
	}
	
	public String getTitle(){
		return this.title;
	}
	
	public void setTitle(String s){
		this.title = s;
	}
	
	public String getMatchColumn(){
		
		return this.matchColumn;
	}
	
	public void setMatchColumn(String s){
		
		this.matchColumn = s;
	}
	
	public String getHide(){
		return this.hide;
	}
	
	public void setHide(String s){
		this.hide = s;
	}
	
	public String[] getLabel(){
		return this.label.split(";");
	}
	
	public void setLabel(String s){
		this.label = this.label+s+";";
	}
	
	public String[] getColumn(){
		return this.column.split(";");
	}
	
	public void setColumn(String s){
		this.column = this.column+s+";";
	}
	
	public String getBack(){
		return this.back;
	}
	
	public void setBack(String s){
		this.back = s;
	}
	
	public int getICol(){
		return this.iCol;
	}
	
	public void setICol(int i){
		this.iCol=i;
	}
	
	//定義開始解析元素的方法. 這里是將<xxx>中的名稱xxx提取出來.
	
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		currentValue.delete(0, currentValue.length());
		if(qName.equals("標(biāo)題名")) this.step = 5;
	
	}
	
	//這里是將<xxx></xxx>之間的值加入到currentValue
	
	public void characters(char[] ch, int start, int length) throws SAXException {
		currentValue.append(ch, start, length);
	}
	
	//在遇到</xxx>結(jié)束后,
	
	public void endElement(String uri, String localName, String qName) throws SAXException {
		switch(this.step){
			case 1:
				this.setSql(this.currentValue.toString().trim());
				break;
			case 2:
				this.setTitle(this.currentValue.toString().trim());
				break;
			case 3:
				this.setMatchColumn(this.currentValue.toString().trim());
				break;
			case 4:
				this.setHide(this.currentValue.toString().trim());
				break;
			case 5:
				this.setLabel(this.currentValue.toString().trim());
				break;
			case 6:
				this.setColumn(this.currentValue.toString().trim());
				break;
			case 7:
				break;
			case 8:
				this.setBack(this.currentValue.toString().trim());
				break;	
			default:
				;
		}
		this.step++;
		//props.put(qName.toLowerCase(), currentValue.toString().trim());

	}
	
	
	public void parse(String filename) throws Exception {
		
		SAXParserFactory factory = SAXParserFactory.newInstance();
		//factory.setNamespaceAware(false);
		//factory.setValidating(false);
		SAXParser parser = factory.newSAXParser();
		
		
		try{
			
			parser.parse(new File(filename).toURL().toString(), this); 
		}finally{
			factory=null;
			parser=null;
		}
	
	}
	
	public void work() throws Exception{
		
		//清空元素
		this.clear();
		
		//解析xml文件
		this.parse(this.getXmlFile());
		//取連接
		conn = new SqlConnection().getSQLConnection();
		
		/*
		 *step 1:填充表頭陣列fillheadline
		 *step 2: 取行數(shù)
		 *step 3:取結(jié)果集
		 */
		 
		//step 1
		this.fillHeadline();
		
		//step 2
		this.iLine = this.dbgetLine();
		if(this.iLine==0){
			this.setMatchString("");
			this.iLine = this.dbgetLine();
			if(this.iLine==0)this.noResult=true;
		}
		
		
		//step 3:
		this.dbgetRS();

		//關(guān)閉;	
		this.conn = null;
	}
	
	//根據(jù)已有的sql生成符合模塊要求的sql
	
	public String makeSql(String s){
		//插入sql條件
		String a,b;
		String upper = s.toUpperCase();
		if(sql.matches("(?i).* ORDER BY .*")){
			a = s.substring(0,upper.lastIndexOf(" ORDER BY "));
			b = s.substring(upper.lastIndexOf(" ORDER BY "),s.length());
		}else{
			a = s;
			b = "";
		}
		if(a.matches("(?i).* WHERE .*")){
			a = a + " and ";
		}else{
			a = a + " where ";
		}
		a = a + this.getMatchColumn()+" like '%"+this.getMatchString()+"%'";
		s = a + b;
		return s;
	}
	
	
	//下面是數(shù)據(jù)庫操作函數(shù)
	//得到表的行數(shù)
	int dbgetLine(){
		try{
			
			
			//初期設(shè)定
			
			String sql = this.sql;
			
			sql = "SELECT count(*)" + sql.substring(sql.toLowerCase().indexOf(" from "),sql.length());
			if(sql.matches("(?i).* ORDER BY .*"))
			sql = sql.substring(0,sql.toUpperCase().lastIndexOf(" ORDER BY "));
			String key = sql.matches("(?i).* WHERE .*")?" and ":" where ";
			sql = sql+key+this.getMatchColumn()+" like "+"'%"+this.getMatchString()+"%'";
			
			//System.out.println(sql);
			
			//準(zhǔn)備
			stmt = conn.prepareStatement(sql);
			
			//設(shè)定
			
			
			//查詢
			rs = stmt.executeQuery();
			
			//取參數(shù)
			
			if(rs.next()){
				int i = rs.getInt(1); 
				//System.out.print("需要打印的行數(shù):");
				//System.out.print(i);
				return i;
			}
			else return -1;
			/*
			rs.last();
			
			System.out.println(rs.getRow());
			rs.beforeFirst();
			
			while(rs.next()){
				System.out.println(rs.getString(4));
			}
			*/
			
		}catch(Exception e){
			e.printStackTrace();
			return -2;
		}
	}
	//取結(jié)果及。
	int dbgetRS(){
		try{
			
			
			//初期設(shè)定		

			
				//如果行數(shù)為0,則無正確匹配值,將匹配字串設(shè)成""
				//最后設(shè)定sql
			this.setSql(this.makeSql(this.getSql()));
			System.out.println(this.sql);	
			
					
			String sql = this.sql;
			this.pX = 1;			
			//準(zhǔn)備
			stmt = conn.prepareStatement(sql);//ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE);
			
			//設(shè)定
			
			
			//查詢
			rs = stmt.executeQuery();
			//取參數(shù)
			/*
			 *1。標(biāo)記隱藏列
			 *2。取真實結(jié)果集列數(shù)
			 */
			this.iMatch = rs.findColumn(this.getMatchColumn());
		
			this.iHide = this.getHide().equals("")?-1:rs.findColumn(this.getHide());
			this.iRSCol = rs.getMetaData().getColumnCount();
			
			this.iCol = this.iHide==-1?this.iRSCol:this.iRSCol-1;
			
			rs.next();
			

			return 0;
			
		}catch(Exception e){
			e.printStackTrace();
			return -1;
		}
	}
	//數(shù)據(jù)庫操作取match值
	public String dbgetMValue() throws Exception{
		this.matchValue = new String(rs.getString(this.iMatch).getBytes("ISO-8859-1"));
		return this.matchValue;
	}
	
	//數(shù)據(jù)庫操作取hide值
	public String dbgetHValue() throws Exception{
		if(this.iHide<1){
			this.hideValue = "";
		}else this.hideValue = new String(rs.getString(this.hide).getBytes("ISO-8859-1"));
		return this.hideValue;
	}
	
	public String dbgetTValue() throws Exception{
		String s = "";
		//隱藏值要跳過
		if(this.pX==this.iHide) this.pX++;
		if(this.pX!=this.iMatch){
			s = new String(rs.getString(this.pX++).getBytes("ISO-8859-1"));
			
			 
		}
		else{
			this.pX++;
			s = this.matchValue;
		}
		while(this.pX==this.iHide){
			this.pX++;
		}
		
		//大于總列數(shù)要到下一行
		if(this.pX>this.iRSCol){
			this.pX = 1;
			rs.next();
		}
		
		return s;
	}	
	/*
	 *
	 *
	 */
	//填充表頭
	void fillHeadline(){
		this.labels = this.getLabel();
		this.p_label = 0;
	}
	
	
	
	//下面是jsp表現(xiàn)層函數(shù)
	//打印表頭
	
	public String printHeadline(){
		return this.labels[this.p_label++];
	}
	
	//取打印行數(shù)
	
	public int getPrintLine(){
		
		return this.iLine;
	}
	
	
	//取表中的匹配列值
	public String getMatchValue() throws Exception{
		
		return this.dbgetMValue();
	}
	
	//取表中的hide值
	public String getHideValue() throws Exception{
		return this.dbgetHValue();
	}
	
	//取表中的其它數(shù)據(jù)值
	public String getTValue() throws Exception{
		return this.dbgetTValue();
	}

	//讀title
	public String showTitle(){
		return this.getTitle();
	}
	
	//
	public String hasResult(){
		return this.noResult?"對不起,沒有結(jié)果":"";
	}
	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电视剧在线看免费| 色综合天天综合给合国产| 日韩一区二区三区电影在线观看| 亚洲成人av电影在线| 欧美日韩免费一区二区三区| 成人短视频下载| 国产精品福利一区| 在线观看av不卡| 三级欧美韩日大片在线看| 56国语精品自产拍在线观看| 九九九久久久精品| 中文字幕精品—区二区四季| 天天综合色天天综合色h| 欧美高清一级片在线| 国内精品视频一区二区三区八戒| 亚洲国产精品黑人久久久| 在线亚洲人成电影网站色www| 同产精品九九九| ww亚洲ww在线观看国产| 91小视频免费观看| 免费高清在线视频一区·| 国产精品情趣视频| 欧美三级电影在线看| 国产精品一区免费视频| 亚洲综合一区二区| 精品国产露脸精彩对白| 色偷偷一区二区三区| 久久精品国产秦先生| 亚洲女子a中天字幕| 精品久久一二三区| 91久久精品一区二区| 久久99精品久久久| 亚洲与欧洲av电影| 国产亚洲精久久久久久| 欧美日韩在线免费视频| 成人精品在线视频观看| 日韩精品亚洲一区二区三区免费| 欧美激情一区二区三区在线| 3751色影院一区二区三区| av亚洲精华国产精华精华| 免费成人在线观看视频| 亚洲乱码精品一二三四区日韩在线| 欧美大片日本大片免费观看| 色综合天天综合色综合av | 久久99热这里只有精品| 成人免费在线观看入口| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美影院一区二区三区| 成人网在线免费视频| 久久成人综合网| 午夜精品视频一区| 亚洲欧美日韩国产中文在线| 国产日本一区二区| 欧美精品一区二区三区一线天视频| 在线精品视频一区二区三四| 国产91精品在线观看| 久久99精品国产.久久久久久| 图片区小说区国产精品视频| 亚洲一区二区在线免费看| 国产精品久久久久久久久久免费看 | 亚洲一本大道在线| 亚洲人成人一区二区在线观看| 久久精品亚洲乱码伦伦中文| 精品国产123| 日韩欧美电影一区| 3d动漫精品啪啪| 3d成人动漫网站| 欧美丰满高潮xxxx喷水动漫| 欧美网站一区二区| 欧美午夜在线观看| 欧美日韩国产大片| 欧美精品第1页| 欧美精品在线一区二区三区| 欧美亚洲国产一区在线观看网站| 99re在线精品| 91视频观看视频| 日本精品一级二级| 欧美性色黄大片手机版| 欧美日韩视频第一区| 欧美久久免费观看| 欧美精品123区| 日韩免费高清视频| 久久久国产精品麻豆| 国产午夜精品在线观看| 国产午夜亚洲精品午夜鲁丝片| 日本一区二区三区dvd视频在线| 欧美激情一区二区三区四区| 中文字幕亚洲视频| 亚洲二区视频在线| 日本美女一区二区三区| 国产在线国偷精品免费看| 国产一区二区三区最好精华液| 国产传媒欧美日韩成人| 99国产精品99久久久久久| 欧美中文字幕一区| 日韩你懂的在线观看| 国产人成亚洲第一网站在线播放| 中文字幕av在线一区二区三区| 亚洲视频在线一区二区| 亚洲午夜精品久久久久久久久| 天涯成人国产亚洲精品一区av| 精品一区二区日韩| k8久久久一区二区三区| 欧美怡红院视频| 精品999在线播放| 18欧美亚洲精品| 天天综合天天综合色| 国产精品18久久久久久久久久久久| 成人av免费在线播放| 欧美日韩国产一级片| 久久免费精品国产久精品久久久久| 国产精品国产三级国产aⅴ原创 | 日本一二三四高清不卡| 亚洲在线免费播放| 韩国精品主播一区二区在线观看 | 欧美日韩极品在线观看一区| 日韩欧美一区二区三区在线| 欧美激情一区不卡| 亚洲第一福利视频在线| 国产a视频精品免费观看| 欧美日韩一区不卡| 欧美经典一区二区| 日日夜夜免费精品视频| 粉嫩av一区二区三区| 欧美另类一区二区三区| 国产精品久久久久久久久动漫| 亚洲专区一二三| 成人美女视频在线观看18| 欧美一区二区免费观在线| 亚洲卡通动漫在线| 国产 日韩 欧美大片| 欧美一卡二卡三卡| 亚洲一区在线观看免费观看电影高清| 国产精品一区二区91| 欧美一区欧美二区| 亚洲一区二区黄色| 成人一二三区视频| 亚洲欧美日韩成人高清在线一区| 免费人成在线不卡| 欧美少妇xxx| 亚洲人成网站精品片在线观看| 国产做a爰片久久毛片| 欧美日韩精品一区二区三区 | 欧美撒尿777hd撒尿| 国产精品传媒入口麻豆| 国产自产v一区二区三区c| 欧美日韩aaa| 夜夜嗨av一区二区三区中文字幕| 国产高清精品网站| 2023国产精华国产精品| 日韩 欧美一区二区三区| 在线观看视频一区二区欧美日韩| 成人欧美一区二区三区黑人麻豆 | 久久久久88色偷偷免费| 日韩黄色小视频| 欧美日韩久久不卡| 一区二区三区精品视频在线| av在线综合网| 国产精品网曝门| 国产69精品久久久久毛片| 久久久不卡影院| 国产麻豆精品95视频| 精品国精品国产| 久久成人精品无人区| 欧美精品一区二区在线播放| 久久成人综合网| 久久美女艺术照精彩视频福利播放| 欧美a一区二区| 精品国产1区2区3区| 国产一区二区美女诱惑| 久久色在线观看| 成人综合在线观看| 中文字幕一区二区三区av| 99riav久久精品riav| 亚洲日本一区二区| 欧美在线一二三| 婷婷久久综合九色综合伊人色| 欧美三级日韩在线| 日本亚洲电影天堂| 久久男人中文字幕资源站| 国产在线一区观看| 国产精品女上位| 色婷婷国产精品久久包臀| 亚洲国产日韩综合久久精品| 91精品国产91久久久久久最新毛片 | 亚洲成人综合网站| 欧美一区二区在线不卡| 狠狠色丁香久久婷婷综| 国产精品欧美经典| 欧美在线一二三| 久久99久久精品| 国产精品美女久久久久久| 欧洲国内综合视频| 久久超碰97人人做人人爱| 国产精品全国免费观看高清| 日本道色综合久久| 黄色成人免费在线| 亚洲免费观看高清完整版在线观看熊| 国产欧美日韩在线视频| 色94色欧美sute亚洲13|