亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲女同女同女同女同女同69| 日韩欧美国产精品| 久久成人久久爱| 亚洲第一精品在线| 在线看国产日韩| 日本系列欧美系列| 精品国产乱码久久| 懂色中文一区二区在线播放| 免费在线观看日韩欧美| 精品国产sm最大网站免费看| 国产精品一区二区x88av| 中文字幕二三区不卡| 色综合激情五月| 蜜臀av在线播放一区二区三区| 精品不卡在线视频| 色综合久久久久久久| 亚洲丶国产丶欧美一区二区三区| 日韩欧美一区电影| 成人自拍视频在线观看| 亚洲国产精品一区二区久久| 26uuu国产在线精品一区二区| 成人av影视在线观看| 亚洲成av人片www| 久久人人超碰精品| 色偷偷88欧美精品久久久| 日本午夜一本久久久综合| 国产欧美精品在线观看| 欧美日韩成人综合| 国产福利一区在线| 图片区小说区区亚洲影院| 久久久久久久网| 欧美调教femdomvk| 国产精品一级黄| 午夜久久福利影院| 国产精品免费久久| 91精品国产综合久久精品图片| 成人在线一区二区三区| 日本aⅴ精品一区二区三区| 综合av第一页| 337p日本欧洲亚洲大胆色噜噜| 欧美色网站导航| www.欧美色图| 狠狠色2019综合网| 日韩高清在线一区| 怡红院av一区二区三区| 国产日韩高清在线| 精品国产伦一区二区三区观看体验| 日本韩国一区二区三区视频| 国产精品乡下勾搭老头1| 免播放器亚洲一区| 丝袜诱惑制服诱惑色一区在线观看| 中文字幕乱码亚洲精品一区| 日韩欧美一级特黄在线播放| 欧美伊人久久大香线蕉综合69| 成人av电影免费在线播放| 国产一区二区按摩在线观看| 日韩电影免费在线看| 一级日本不卡的影视| 亚洲人成电影网站色mp4| 国产精品激情偷乱一区二区∴| 久久一区二区三区四区| 欧美一级理论片| 日韩亚洲欧美一区二区三区| 欧美中文字幕亚洲一区二区va在线 | 欧美精彩视频一区二区三区| 欧美精品三级在线观看| 欧美色国产精品| 91麻豆精品秘密| 99久久精品免费看| 99精品久久只有精品| 不卡视频在线观看| 成人国产视频在线观看| 成人开心网精品视频| 国产麻豆精品在线| 国产一区91精品张津瑜| 国产在线播放一区三区四| 国产在线观看免费一区| 国产精品影视天天线| 国产99精品在线观看| 成人黄色在线网站| 91一区二区在线观看| 欧美性受xxxx黑人xyx性爽| 欧美亚洲自拍偷拍| 91精品在线免费| 精品日韩在线观看| 欧美韩国日本不卡| **网站欧美大片在线观看| 亚洲欧美福利一区二区| 一区二区三区四区高清精品免费观看| 综合激情网...| 亚洲国产wwwccc36天堂| 免费成人性网站| 国产高清久久久| 日本精品视频一区二区| 91精品国产欧美一区二区成人| 日韩你懂的在线观看| 国产免费久久精品| 亚洲一区二区三区四区五区中文| 午夜精品视频一区| 国产一区二区主播在线| 99久久精品免费精品国产| 欧美日韩精品欧美日韩精品 | 亚洲欧美日韩综合aⅴ视频| 中文字幕亚洲一区二区va在线| 亚洲乱码国产乱码精品精的特点| 视频一区二区三区入口| 国产福利一区二区三区| 日本精品一级二级| 欧美精品一区二区三区在线播放| 欧美激情一区二区三区| 亚洲成人午夜电影| 成人丝袜18视频在线观看| 91久久精品一区二区| 精品噜噜噜噜久久久久久久久试看| 国产日韩成人精品| 偷拍日韩校园综合在线| 国产老女人精品毛片久久| 在线中文字幕不卡| 久久精品夜色噜噜亚洲aⅴ| 亚洲高清视频的网址| 成人综合婷婷国产精品久久蜜臀| 欧美精品 日韩| 中文字幕在线一区二区三区| 日本最新不卡在线| 91亚洲午夜精品久久久久久| 亚洲精品在线观看视频| 亚洲不卡av一区二区三区| 波多野结衣在线一区| 日韩视频免费观看高清完整版| 最新欧美精品一区二区三区| 久久机这里只有精品| 在线观看一区不卡| 亚洲欧洲色图综合| 国产成人日日夜夜| 欧美一卡二卡三卡| 亚洲a一区二区| 色综合色综合色综合| 久久久美女毛片| 男人的j进女人的j一区| 欧美成人艳星乳罩| 午夜伦欧美伦电影理论片| 91色视频在线| 国产精品久久一级| 国产乱码精品一区二区三区av| 91精品国产综合久久久久| 一区二区三区欧美日| 国产91在线看| 国产目拍亚洲精品99久久精品| 另类小说图片综合网| 欧美精品v国产精品v日韩精品| 亚洲综合免费观看高清在线观看| 成人午夜私人影院| 国产午夜精品久久久久久久| 韩国av一区二区三区在线观看 | 欧美v国产在线一区二区三区| 亚洲一区电影777| 欧美视频日韩视频在线观看| 樱桃国产成人精品视频| 色综合久久99| 亚洲欧美激情小说另类| 99这里只有精品| 亚洲欧美色综合| 91国偷自产一区二区使用方法| 亚洲精品免费播放| 欧美在线观看视频一区二区 | 成人免费高清视频| 国产欧美精品一区二区色综合| 国产精品18久久久久久vr | 国产精品久线观看视频| 不卡在线视频中文字幕| 国产精品免费视频观看| 99精品视频在线播放观看| 亚洲欧洲制服丝袜| 91官网在线免费观看| 亚洲高清免费在线| 欧美一区中文字幕| 国产乱码精品一品二品| 国产精品欧美综合在线| av在线不卡网| 亚洲国产精品视频| 日韩欧美一区二区三区在线| 国产精品亚洲第一区在线暖暖韩国| 国产视频亚洲色图| 色综合久久六月婷婷中文字幕| 亚洲高清一区二区三区| 欧美成人一区二区三区片免费| 国产91精品久久久久久久网曝门| ...xxx性欧美| 在线不卡欧美精品一区二区三区| 九九精品一区二区| 自拍偷拍欧美激情| 欧美日韩一区成人| 狠狠色丁香久久婷婷综合_中| 国产精品久久久久久久久免费桃花| 一本色道久久综合亚洲91 | 性感美女极品91精品| 欧美大片拔萝卜| 99久久精品一区| 美女脱光内衣内裤视频久久网站| 中文成人av在线|