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

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

?? preparedstatement.java

?? mysql jdbc驅(qū)動程序 mysql jdbc驅(qū)動程序 mysql jdbc驅(qū)動程序 mysql jdbc驅(qū)動程序
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
/* Copyright (C) 2002-2007 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as  published by the Free Software Foundation. There are special exceptions to the terms and conditions of the GPL  as it is applied to this software. View the full text of the  exception in file EXCEPTIONS-CONNECTOR-J in the directory of this  software distribution. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package com.mysql.jdbc;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectOutputStream;import java.io.Reader;import java.io.StringReader;import java.io.UnsupportedEncodingException;import java.math.BigDecimal;import java.math.BigInteger;import java.net.URL;import java.sql.Array;import java.sql.Clob;import java.sql.ParameterMetaData;import java.sql.Ref;import java.sql.SQLException;import java.sql.Time;import java.sql.Timestamp;import java.sql.Types;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Locale;import java.util.TimeZone;import com.mysql.jdbc.Statement.CancelTask;import com.mysql.jdbc.exceptions.MySQLTimeoutException;import com.mysql.jdbc.profiler.ProfilerEvent;/** * A SQL Statement is pre-compiled and stored in a PreparedStatement object. * This object can then be used to efficiently execute this statement multiple * times. *  * <p> * <B>Note:</B> The setXXX methods for setting IN parameter values must specify * types that are compatible with the defined SQL type of the input parameter. * For instance, if the IN parameter has SQL type Integer, then setInt should be * used. * </p> *  * <p> * If arbitrary parameter type conversions are required, then the setObject * method should be used with a target SQL type. * </p> *  * @author Mark Matthews * @version $Id: PreparedStatement.java,v 1.1.2.1 2005/05/13 18:58:38 mmatthews *          Exp $ *  * @see java.sql.ResultSet * @see java.sql.PreparedStatement */public class PreparedStatement extends com.mysql.jdbc.Statement implements		java.sql.PreparedStatement {	class BatchParams {		boolean[] isNull = null;		boolean[] isStream = null;		InputStream[] parameterStreams = null;		byte[][] parameterStrings = null;		int[] streamLengths = null;		BatchParams(byte[][] strings, InputStream[] streams,				boolean[] isStreamFlags, int[] lengths, boolean[] isNullFlags) {			//			// Make copies			//			this.parameterStrings = new byte[strings.length][];			this.parameterStreams = new InputStream[streams.length];			this.isStream = new boolean[isStreamFlags.length];			this.streamLengths = new int[lengths.length];			this.isNull = new boolean[isNullFlags.length];			System.arraycopy(strings, 0, this.parameterStrings, 0,					strings.length);			System.arraycopy(streams, 0, this.parameterStreams, 0,					streams.length);			System.arraycopy(isStreamFlags, 0, this.isStream, 0,					isStreamFlags.length);			System.arraycopy(lengths, 0, this.streamLengths, 0, lengths.length);			System					.arraycopy(isNullFlags, 0, this.isNull, 0,							isNullFlags.length);		}	}	class EndPoint {		int begin;		int end;		EndPoint(int b, int e) {			this.begin = b;			this.end = e;		}	}	class ParseInfo {		char firstStmtChar = 0;		boolean foundLimitClause = false;		boolean foundLoadData = false;		long lastUsed = 0;		int statementLength = 0;				int statementStartPos = 0;		byte[][] staticSql = null;		/**		 * Represents the "parsed" state of a client-side		 * prepared statement, with the statement broken up into		 * it's static and dynamic (where parameters are bound) 		 * parts.		 */		public ParseInfo(String sql, Connection conn,				java.sql.DatabaseMetaData dbmd, String encoding,				SingleByteCharsetConverter converter) throws SQLException {			if (sql == null) {				throw SQLError.createSQLException(Messages						.getString("PreparedStatement.61"), //$NON-NLS-1$						SQLError.SQL_STATE_ILLEGAL_ARGUMENT);			}			this.lastUsed = System.currentTimeMillis();			String quotedIdentifierString = dbmd.getIdentifierQuoteString();			char quotedIdentifierChar = 0;			if ((quotedIdentifierString != null)					&& !quotedIdentifierString.equals(" ") //$NON-NLS-1$					&& (quotedIdentifierString.length() > 0)) {				quotedIdentifierChar = quotedIdentifierString.charAt(0);			}			this.statementLength = sql.length();			ArrayList endpointList = new ArrayList();			boolean inQuotes = false;			char quoteChar = 0;			boolean inQuotedId = false;			int lastParmEnd = 0;			int i;			int stopLookingForLimitClause = this.statementLength - 5;			this.foundLimitClause = false;						boolean noBackslashEscapes = connection.isNoBackslashEscapesSet();						// we're not trying to be real pedantic here, but we'd like to 			// skip comments at the beginning of statements, as frameworks			// such as Hibernate use them to aid in debugging						statementStartPos = findStartOfStatement(sql);						for (i = statementStartPos; i < this.statementLength; ++i) {				char c = sql.charAt(i);				if ((this.firstStmtChar == 0) && !Character.isWhitespace(c)) {					// Determine what kind of statement we're doing (_S_elect,					// _I_nsert, etc.)					this.firstStmtChar = Character.toUpperCase(c);				}				if (!noBackslashEscapes &&						c == '\\' && i < (this.statementLength - 1)) {					i++;					continue; // next character is escaped				}								// are we in a quoted identifier?				// (only valid when the id is not inside a 'string')				if (!inQuotes && (quotedIdentifierChar != 0)						&& (c == quotedIdentifierChar)) {					inQuotedId = !inQuotedId;				} else if (!inQuotedId) {					//	only respect quotes when not in a quoted identifier										if (inQuotes) {						if (((c == '\'') || (c == '"')) && c == quoteChar) {							if (i < (this.statementLength - 1) && sql.charAt(i + 1) == quoteChar) {								i++; 								continue; // inline quote escape							}														inQuotes = !inQuotes;							quoteChar = 0;						} else if (((c == '\'') || (c == '"')) && c == quoteChar) {							inQuotes = !inQuotes;							quoteChar = 0;						}					} else {						if (c == '#'								|| (c == '-' && (i + 1) < this.statementLength && sql										.charAt(i + 1) == '-')) {							// run out to end of statement, or newline,							// whichever comes first							int endOfStmt = this.statementLength - 1;							for (; i < endOfStmt; i++) {								c = sql.charAt(i);								if (c == '\r' || c == '\n') {									break;								}							}							continue;						} else if (c == '/' && (i + 1) < this.statementLength) {							// Comment?							char cNext = sql.charAt(i + 1);														if (cNext == '*') {								i+= 2;																for (int j = i; j < this.statementLength; j++) {									i++;									cNext = sql.charAt(j);																		if (cNext == '*' && (j + 1) < this.statementLength) {										if (sql.charAt(j + 1) == '/') {											i++;																						if (i < this.statementLength) {												c = sql.charAt(i);											}																						break; // comment done										}									}								}							}						} else if ((c == '\'') || (c == '"')) {							inQuotes = true;							quoteChar = c;						}					}				}				if ((c == '?') && !inQuotes && !inQuotedId) {					endpointList.add(new int[] { lastParmEnd, i });					lastParmEnd = i + 1;				}				if (!inQuotes && (i < stopLookingForLimitClause)) {					if ((c == 'L') || (c == 'l')) {						char posI1 = sql.charAt(i + 1);						if ((posI1 == 'I') || (posI1 == 'i')) {							char posM = sql.charAt(i + 2);							if ((posM == 'M') || (posM == 'm')) {								char posI2 = sql.charAt(i + 3);								if ((posI2 == 'I') || (posI2 == 'i')) {									char posT = sql.charAt(i + 4);									if ((posT == 'T') || (posT == 't')) {										foundLimitClause = true;									}								}							}						}					}				}			}			if (this.firstStmtChar == 'L') {				if (StringUtils.startsWithIgnoreCaseAndWs(sql, "LOAD DATA")) { //$NON-NLS-1$					this.foundLoadData = true;				} else {					this.foundLoadData = false;				}			} else {				this.foundLoadData = false;			}			endpointList.add(new int[] { lastParmEnd, this.statementLength });			this.staticSql = new byte[endpointList.size()][];			char[] asCharArray = sql.toCharArray();			for (i = 0; i < this.staticSql.length; i++) {				int[] ep = (int[]) endpointList.get(i);				int end = ep[1];				int begin = ep[0];				int len = end - begin;				if (this.foundLoadData) {					String temp = new String(asCharArray, begin, len);					this.staticSql[i] = temp.getBytes();				} else if (encoding == null) {					byte[] buf = new byte[len];					for (int j = 0; j < len; j++) {						buf[j] = (byte) sql.charAt(begin + j);					}					this.staticSql[i] = buf;				} else {					if (converter != null) {						this.staticSql[i] = StringUtils.getBytes(sql,								converter, encoding, connection										.getServerCharacterEncoding(), begin,								len, connection.parserKnowsUnicode());					} else {						String temp = new String(asCharArray, begin, len);						this.staticSql[i] = StringUtils.getBytes(temp,								encoding, connection										.getServerCharacterEncoding(),								connection.parserKnowsUnicode(), conn);					}				}			}		}	}	private final static byte[] HEX_DIGITS = new byte[] { (byte) '0',			(byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5',			(byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'A',			(byte) 'B', (byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F' };	/**	 * Reads length bytes from reader into buf. Blocks until enough input is	 * available	 * 	 * @param reader	 *            DOCUMENT ME!	 * @param buf	 *            DOCUMENT ME!	 * @param length	 *            DOCUMENT ME!	 * 	 * @return DOCUMENT ME!	 * 	 * @throws IOException	 *             DOCUMENT ME!	 */	private static int readFully(Reader reader, char[] buf, int length)			throws IOException {		int numCharsRead = 0;		while (numCharsRead < length) {			int count = reader.read(buf, numCharsRead, length - numCharsRead);			if (count < 0) {				break;			}			numCharsRead += count;		}		return numCharsRead;	}	/**	 * Does the batch (if any) contain "plain" statements added by	 * Statement.addBatch(String)?	 * 	 * If so, we can't re-write it to use multi-value or multi-queries.	 */	protected boolean batchHasPlainStatements = false;	private java.sql.DatabaseMetaData dbmd = null;	/**	 * What is the first character of the prepared statement (used to check for	 * SELECT vs. INSERT/UPDATE/DELETE)	 */	protected char firstCharOfStmt = 0;	/** Does the SQL for this statement contain a 'limit' clause? */	protected boolean hasLimitClause = false;		/** Is this query a LOAD DATA query? */	protected boolean isLoadDataQuery = false;	private boolean[] isNull = null;	private boolean[] isStream = null;	protected int numberOfExecutions = 0;	/** The SQL that was passed in to 'prepare' */	protected String originalSql = null;	/** The number of parameters in this PreparedStatement */	protected int parameterCount;	protected MysqlParameterMetadata parameterMetaData;	private InputStream[] parameterStreams = null;	private byte[][] parameterValues = null;	private ParseInfo parseInfo;	private java.sql.ResultSetMetaData pstmtResultMetaData;	private byte[][] staticSqlStrings = null;	private byte[] streamConvertBuf = new byte[4096];	private int[] streamLengths = null;	private SimpleDateFormat tsdf = null;	/**	 * Are we using a version of MySQL where we can use 'true' boolean values?	 */	protected boolean useTrueBoolean = false;	private boolean usingAnsiMode;	private String batchedValuesClause;	/** Where does the statement text actually start? */		private int statementAfterCommentsPos;	/**	 * have we checked whether we can rewrite this statement as a multi-value	 * insert?	 */	private boolean hasCheckedForRewrite = false;	/** Can we actually rewrite this statement as a multi-value insert? */	private boolean canRewrite = false;	private boolean doPingInstead;		/**	 * Constructor used by server-side prepared statements	 * 	 * @param conn	 *            the connection that created us	 * @param catalog

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人资源在线| 一区二区三区日韩欧美精品| 欧美高清性hdvideosex| 在线视频欧美区| 欧美在线综合视频| 欧美羞羞免费网站| 欧美亚洲一区三区| 欧美精品在线观看一区二区| 欧美绝品在线观看成人午夜影视| 欧美日韩精品一区二区三区| 91麻豆精品国产自产在线| 欧美一区中文字幕| 久久久久一区二区三区四区| 国产精品久久久久久久裸模| 亚洲日本乱码在线观看| 一区二区激情视频| 日韩成人午夜电影| 韩国v欧美v日本v亚洲v| www.欧美日韩| 在线观看91精品国产入口| 欧美老年两性高潮| 久久久久久9999| 亚洲欧美自拍偷拍| 亚洲大片一区二区三区| 狠狠狠色丁香婷婷综合激情| 高清成人在线观看| 欧美日韩一区二区电影| 日韩一级高清毛片| 亚洲国产激情av| 亚洲福利视频一区| 国产一区二区伦理片| 一本久久精品一区二区| 91精品国产日韩91久久久久久| 久久色在线视频| 亚洲综合久久久| 韩国成人在线视频| 欧美性受xxxx| 国产日产欧美一区二区视频| 亚洲人成影院在线观看| 国产资源在线一区| 欧美伊人精品成人久久综合97| 精品国产一区二区三区av性色 | 夜夜精品视频一区二区| 蜜臀av在线播放一区二区三区| 国产成人免费视频网站高清观看视频| 92精品国产成人观看免费| 欧美videossexotv100| 一区二区三区中文字幕| 国产精品一区二区91| 欧美性色黄大片手机版| 亚洲丝袜美腿综合| 国产九色sp调教91| 日韩写真欧美这视频| 亚洲另类在线制服丝袜| 国产91精品一区二区麻豆亚洲| 欧美一区二区私人影院日本| 亚洲一区二区欧美日韩 | 91行情网站电视在线观看高清版| 亚洲精品一区二区三区香蕉| 亚洲成国产人片在线观看| av在线播放一区二区三区| 精品国产电影一区二区| 麻豆成人综合网| 欧美一区二区福利在线| 日韩av不卡在线观看| 欧美色偷偷大香| 亚洲国产精品天堂| 日本久久精品电影| 国产精品二区一区二区aⅴ污介绍| 精彩视频一区二区| 亚洲精品在线观| 国产伦理精品不卡| 欧美激情一区三区| 国产福利精品一区二区| 一区二区三区日韩在线观看| 91亚洲精品一区二区乱码| 国产欧美日韩麻豆91| 亚洲一区二区3| 日韩欧美国产不卡| 午夜精品成人在线| 欧美亚洲免费在线一区| 亚洲精品视频免费看| 99r精品视频| 亚洲一区二区三区视频在线播放| 色综合激情五月| 性久久久久久久久久久久| 欧美性色欧美a在线播放| 亚洲成av人在线观看| 日本韩国精品在线| 亚洲无线码一区二区三区| 国产高清不卡一区| 亚洲欧美视频在线观看视频| 制服丝袜av成人在线看| 免费在线观看不卡| 日韩一区二区免费电影| 国产成人三级在线观看| 日韩欧美成人一区二区| 免费高清在线视频一区·| 欧美日韩在线综合| 亚洲免费三区一区二区| 国产高清亚洲一区| 欧美制服丝袜第一页| 成人黄色一级视频| 亚洲私人黄色宅男| 7777精品伊人久久久大香线蕉超级流畅 | 狠狠狠色丁香婷婷综合久久五月| 久久久久国产精品麻豆| 95精品视频在线| 午夜伦欧美伦电影理论片| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 精品一区二区精品| 国产精品麻豆视频| 欧美伦理电影网| 丁香天五香天堂综合| 亚洲第一会所有码转帖| 久久久亚洲高清| 欧美精品一二三| 成人丝袜高跟foot| 久久精品久久久精品美女| 国产精品全国免费观看高清| 欧美一级日韩免费不卡| 成人国产精品免费观看视频| 天天av天天翘天天综合网 | 偷窥少妇高潮呻吟av久久免费| 精品国产一区二区亚洲人成毛片| 色婷婷综合久久久久中文 | 中文字幕亚洲在| 欧美第一区第二区| 成人污污视频在线观看| 91在线精品秘密一区二区| 国产欧美精品一区aⅴ影院| 欧美视频一区在线| 成人国产精品免费网站| 日韩av电影免费观看高清完整版| 亚洲色图色小说| 2023国产精品| 欧美丰满一区二区免费视频| 在线中文字幕不卡| 成人黄色777网| 国产精品一区久久久久| 蜜桃久久久久久| 免费人成网站在线观看欧美高清| 亚洲人成人一区二区在线观看| 国产欧美日韩不卡| 久久嫩草精品久久久久| 欧美大片免费久久精品三p| 91精品免费观看| 欧美性感一类影片在线播放| 91丨porny丨最新| 92精品国产成人观看免费| 972aa.com艺术欧美| 97精品国产露脸对白| 99精品久久久久久| 一本一道久久a久久精品| 99视频一区二区三区| 91日韩在线专区| av电影在线观看一区| 91首页免费视频| 日本久久电影网| 在线这里只有精品| 欧美群妇大交群的观看方式| 在线成人小视频| 欧美mv和日韩mv的网站| 久久久精品综合| 国产精品高潮呻吟| 一区二区三区在线视频观看| 亚洲精选在线视频| 亚洲va在线va天堂| 精品一区二区三区日韩| 国产成人av一区二区三区在线观看| 国产**成人网毛片九色| 91麻豆免费观看| 91麻豆精品国产91久久久更新时间| 欧美一级片在线看| 国产欧美一二三区| 亚洲日本电影在线| 日韩电影在线观看一区| 狠狠色狠狠色综合系列| 成人黄色国产精品网站大全在线免费观看 | 欧日韩精品视频| 欧美三级欧美一级| 日韩欧美高清一区| 中文字幕一区二区5566日韩| 亚洲高清视频在线| 精品一区在线看| 亚洲v中文字幕| 99精品视频在线播放观看| 欧美一区二区三区免费观看视频 | 成人h精品动漫一区二区三区| 不卡一区中文字幕| 欧美亚洲尤物久久| 欧美精品一区二区三区视频| 国产精品国产精品国产专区不蜜| 亚洲午夜免费福利视频| 国产福利一区在线| 欧美色偷偷大香| 中文字幕中文字幕在线一区| 免费久久精品视频| 色综合久久久久综合体桃花网| 日韩美一区二区三区|