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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? databasemetadata.java

?? mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
	 * @return true if changes are detected by the resultset type	 * @exception SQLException	 *                if a database-access error occurs.	 */	public boolean deletesAreDetected(int type) throws SQLException {		return false;	}	// ----------------------------------------------------------------------	/**	 * Did getMaxRowSize() include LONGVARCHAR and LONGVARBINARY blobs?	 * 	 * @return true if so	 * @throws SQLException	 *             DOCUMENT ME!	 */	public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {		return true;	}	/**	 * Finds the end of the parameter declaration from the output of "SHOW	 * CREATE PROCEDURE".	 * 	 * @param beginIndex	 *            should be the index of the procedure body that contains the	 *            first "(".	 * @param procedureDef	 *            the procedure body	 * @param quoteChar	 *            the identifier quote character in use	 * @return the ending index of the parameter declaration, not including the	 *         closing ")"	 * @throws SQLException	 *             if a parse error occurs.	 */	private int endPositionOfParameterDeclaration(int beginIndex,			String procedureDef, String quoteChar) throws SQLException {		int currentPos = beginIndex + 1;		int parenDepth = 1; // counting the first openParen		while (parenDepth > 0 && currentPos < procedureDef.length()) {			int closedParenIndex = StringUtils.indexOfIgnoreCaseRespectQuotes(					currentPos, procedureDef, ")", quoteChar.charAt(0),					!this.conn.isNoBackslashEscapesSet());			if (closedParenIndex != -1) {				int nextOpenParenIndex = StringUtils						.indexOfIgnoreCaseRespectQuotes(currentPos,								procedureDef, "(", quoteChar.charAt(0),								!this.conn.isNoBackslashEscapesSet());				if (nextOpenParenIndex != -1						&& nextOpenParenIndex < closedParenIndex) {					parenDepth++;					currentPos = closedParenIndex + 1; // set after closed														// paren that increases														// depth				} else {					parenDepth--;					currentPos = closedParenIndex; // start search from same													// position				}			} else {				// we should always get closed paren of some sort				throw SQLError						.createSQLException(								"Internal error when parsing callable statement metadata",								SQLError.SQL_STATE_GENERAL_ERROR);			}		}		return currentPos;	}	/**	 * Extracts foreign key info for one table.	 * 	 * @param rows	 *            the list of rows to add to	 * @param rs	 *            the result set from 'SHOW CREATE TABLE'	 * @param catalog	 *            the database name	 * @return the list of rows with new rows added	 * @throws SQLException	 *             if a database access error occurs	 */	public List extractForeignKeyForTable(ArrayList rows,			java.sql.ResultSet rs, String catalog) throws SQLException {		byte[][] row = new byte[3][];		row[0] = rs.getBytes(1);		row[1] = s2b(SUPPORTS_FK);		String createTableString = rs.getString(2);		StringTokenizer lineTokenizer = new StringTokenizer(createTableString,				"\n");		StringBuffer commentBuf = new StringBuffer("comment; ");		boolean firstTime = true;		String quoteChar = getIdentifierQuoteString();		if (quoteChar == null) {			quoteChar = "`";		}		while (lineTokenizer.hasMoreTokens()) {			String line = lineTokenizer.nextToken().trim();			String constraintName = null;			if (StringUtils.startsWithIgnoreCase(line, "CONSTRAINT")) {				boolean usingBackTicks = true;				int beginPos = line.indexOf(quoteChar);				if (beginPos == -1) {					beginPos = line.indexOf("\"");					usingBackTicks = false;				}				if (beginPos != -1) {					int endPos = -1;					if (usingBackTicks) {						endPos = line.indexOf(quoteChar, beginPos + 1);					} else {						endPos = line.indexOf("\"", beginPos + 1);					}					if (endPos != -1) {						constraintName = line.substring(beginPos + 1, endPos);						line = line.substring(endPos + 1, line.length()).trim();					}				}			}			if (line.startsWith("FOREIGN KEY")) {				if (line.endsWith(",")) {					line = line.substring(0, line.length() - 1);				}				char quote = this.quotedId.charAt(0);				int indexOfFK = line.indexOf("FOREIGN KEY");				String localColumnName = null;				String referencedCatalogName = this.quotedId + catalog						+ this.quotedId;				String referencedTableName = null;				String referencedColumnName = null;				if (indexOfFK != -1) {					int afterFk = indexOfFK + "FOREIGN KEY".length();					int indexOfRef = StringUtils							.indexOfIgnoreCaseRespectQuotes(afterFk, line,									"REFERENCES", quote, true);					if (indexOfRef != -1) {						int indexOfParenOpen = line.indexOf('(', afterFk);						int indexOfParenClose = StringUtils								.indexOfIgnoreCaseRespectQuotes(										indexOfParenOpen, line, ")", quote,										true);						if (indexOfParenOpen == -1 || indexOfParenClose == -1) {							// throw SQLError.createSQLException();						}						localColumnName = line.substring(indexOfParenOpen + 1,								indexOfParenClose);						int afterRef = indexOfRef + "REFERENCES".length();						int referencedColumnBegin = StringUtils								.indexOfIgnoreCaseRespectQuotes(afterRef, line,										"(", quote, true);						if (referencedColumnBegin != -1) {							referencedTableName = line.substring(afterRef,									referencedColumnBegin);							int referencedColumnEnd = StringUtils									.indexOfIgnoreCaseRespectQuotes(											referencedColumnBegin + 1, line,											")", quote, true);							if (referencedColumnEnd != -1) {								referencedColumnName = line.substring(										referencedColumnBegin + 1,										referencedColumnEnd);							}							int indexOfCatalogSep = StringUtils									.indexOfIgnoreCaseRespectQuotes(0,											referencedTableName, ".", quote,											true);							if (indexOfCatalogSep != -1) {								referencedCatalogName = referencedTableName										.substring(0, indexOfCatalogSep);								referencedTableName = referencedTableName										.substring(indexOfCatalogSep + 1);							}						}					}				}				if (!firstTime) {					commentBuf.append("; ");				} else {					firstTime = false;				}				if (constraintName != null) {					commentBuf.append(constraintName);				} else {					commentBuf.append("not_available");				}				commentBuf.append("(");				commentBuf.append(localColumnName);				commentBuf.append(") REFER ");				commentBuf.append(referencedCatalogName);				commentBuf.append("/");				commentBuf.append(referencedTableName);				commentBuf.append("(");				commentBuf.append(referencedColumnName);				commentBuf.append(")");				int lastParenIndex = line.lastIndexOf(")");				if (lastParenIndex != (line.length() - 1)) {					String cascadeOptions = cascadeOptions = line							.substring(lastParenIndex + 1);					commentBuf.append(" ");					commentBuf.append(cascadeOptions);				}			}		}		row[2] = s2b(commentBuf.toString());		rows.add(row);		return rows;	}	/**	 * Creates a result set similar enough to 'SHOW TABLE STATUS' to allow the	 * same code to work on extracting the foreign key data	 * 	 * @param connToUse	 *            the database connection to use	 * @param metadata	 *            the DatabaseMetaData instance calling this method	 * @param catalog	 *            the database name to extract foreign key info for	 * @param tableName	 *            the table to extract foreign key info for	 * @return A result set that has the structure of 'show table status'	 * @throws SQLException	 *             if a database access error occurs.	 */	public ResultSet extractForeignKeyFromCreateTable(String catalog,			String tableName) throws SQLException {		ArrayList tableList = new ArrayList();		java.sql.ResultSet rs = null;		java.sql.Statement stmt = null;		if (tableName != null) {			tableList.add(tableName);		} else {			try {				rs = getTables(catalog, "", "%", new String[] { "TABLE" });				while (rs.next()) {					tableList.add(rs.getString("TABLE_NAME"));				}			} finally {				if (rs != null) {					rs.close();				}				rs = null;			}		}		ArrayList rows = new ArrayList();		Field[] fields = new Field[3];		fields[0] = new Field("", "Name", Types.CHAR, Integer.MAX_VALUE);		fields[1] = new Field("", "Type", Types.CHAR, 255);		fields[2] = new Field("", "Comment", Types.CHAR, Integer.MAX_VALUE);		int numTables = tableList.size();		stmt = this.conn.getMetadataSafeStatement();		String quoteChar = getIdentifierQuoteString();		if (quoteChar == null) {			quoteChar = "`";		}		try {			for (int i = 0; i < numTables; i++) {				String tableToExtract = (String) tableList.get(i);				String query = new StringBuffer("SHOW CREATE TABLE ").append(						quoteChar).append(catalog).append(quoteChar)						.append(".").append(quoteChar).append(tableToExtract)						.append(quoteChar).toString();				try {					rs = stmt.executeQuery(query);				} catch (SQLException sqlEx) {					// Table might've disappeared on us, not really an error					String sqlState = sqlEx.getSQLState();										if (!"42S02".equals(sqlState) && 							sqlEx.getErrorCode() != MysqlErrorNumbers.ER_NO_SUCH_TABLE) {						throw sqlEx;					}										continue;				}				while (rs.next()) {					extractForeignKeyForTable(rows, rs, catalog);				}			}		} finally {			if (rs != null) {				rs.close();			}			rs = null;			if (stmt != null) {				stmt.close();			}			stmt = null;		}		return buildResultSet(fields, rows);	}	/**	 * Finds the end of the RETURNS clause for SQL Functions by using any of the	 * keywords allowed after the RETURNS clause, or a label.	 * 	 * @param procedureDefn	 *            the function body containing the definition of the function	 * @param quoteChar	 *            the identifier quote string in use	 * @param positionOfReturnKeyword	 *            the position of "RETRUNS" in the definition	 * @return the end of the returns clause	 * @throws SQLException	 *             if a parse error occurs	 */	private int findEndOfReturnsClause(String procedureDefn, String quoteChar,			int positionOfReturnKeyword) throws SQLException {		/*		 * characteristic: LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL |		 * NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY {		 * DEFINER | INVOKER } | COMMENT 'string'		 */		String[] tokens = new String[] { "LANGUAGE", "NOT", "DETERMINISTIC",				"CONTAINS", "NO", "READ", "MODIFIES", "SQL", "COMMENT", "BEGIN", 				"RETURN" };		int startLookingAt = positionOfReturnKeyword + "RETURNS".length() + 1;		for (int i = 0; i < tokens.length; i++) {			int endOfReturn = StringUtils.indexOfIgnoreCaseRespectQuotes(					startLookingAt, procedureDefn, tokens[i], quoteChar							.charAt(0), !this.conn.isNoBackslashEscapesSet());			if (endOfReturn != -1) {				return endOfReturn;			}		}		// Label?		int endOfReturn = StringUtils.indexOfIgnoreCaseRespectQuotes(				startLookingAt, procedureDefn, ":", quoteChar.charAt(0),				!this.conn.isNoBackslashEscapesSet());		if (endOfReturn != -1) {			// seek back until whitespace			for (int i = endOfReturn; i > 0; i--) {				if (Character.isWhitespace(procedureDefn.charAt(i))) {					return i;				}			}		}		// We can't parse it.		throw SQLError.createSQLException(				"Internal error when parsing callable statement metadata",				SQLError.SQL_STATE_GENERAL_ERROR);	}	/**	 * @see DatabaseMetaData#getAttributes(String, String, String, String)	 */	public java.sql.ResultSet getAttributes(String arg0, String arg1,			String arg2, String arg3) throws SQLException {		Field[] fields = new Field[21];		fields[0] = new Field("", "TYPE_CAT", Types.CHAR, 32);		fields[1] = new Field("", "TYPE_SCHEM", Types.CHAR, 32);		fields[2] = new Field("", "TYPE_NAME", Types.CHAR, 32);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉乱码成人久久天堂爱免费| 日韩免费一区二区| 亚洲欧美在线aaa| 成人高清伦理免费影院在线观看| 久久久久久久久久久电影| 国产精品系列在线播放| 国产日产欧美一区| 不卡的看片网站| 亚洲午夜电影在线| 777色狠狠一区二区三区| 奇米精品一区二区三区四区| 日韩区在线观看| 国产精品69毛片高清亚洲| 日本一区二区不卡视频| 一本色道a无线码一区v| 亚洲国产精品一区二区www| 91精品国产综合久久久久久漫画| 美女视频网站久久| 亚洲国产激情av| 欧美在线免费观看视频| 日本在线不卡视频| 中文一区在线播放| 欧美亚洲一区三区| 国产一区三区三区| 一区二区成人在线| 欧美va亚洲va| 91福利在线看| 国产在线观看一区二区| 亚洲免费毛片网站| 欧美大白屁股肥臀xxxxxx| 成人国产一区二区三区精品| 亚洲制服丝袜av| 精品国产区一区| 色先锋久久av资源部| 久久er99热精品一区二区| 欧美国产日韩a欧美在线观看| 色婷婷综合五月| 韩国中文字幕2020精品| 怡红院av一区二区三区| 精品国精品自拍自在线| 在线免费亚洲电影| 国产精品66部| 视频一区在线播放| 亚洲视频一区在线| 久久久久久亚洲综合影院红桃| 欧美伊人久久久久久久久影院| 成人免费av资源| 蜜乳av一区二区三区| 一区二区国产视频| 国产精品国产三级国产专播品爱网 | 一区二区三区 在线观看视频| 欧美成人aa大片| 欧美日韩成人在线| 色乱码一区二区三区88| 粉嫩绯色av一区二区在线观看| 蜜臀久久99精品久久久久宅男| 亚洲美女屁股眼交3| 久久精品一区八戒影视| 91麻豆精品国产91久久久久| 色婷婷综合久久久中文一区二区 | 丰满亚洲少妇av| 蜜桃视频第一区免费观看| 亚洲v精品v日韩v欧美v专区 | 国产日韩欧美精品电影三级在线| 欧美浪妇xxxx高跟鞋交| 91国内精品野花午夜精品 | 日本丰满少妇一区二区三区| 国产.精品.日韩.另类.中文.在线.播放 | 国产精品羞羞答答xxdd| 奇米综合一区二区三区精品视频 | 日韩精品1区2区3区| 亚洲欧美日韩国产手机在线| 国产欧美日韩另类一区| 久久色.com| 久久久久久久久99精品| 欧美精品一区二区三区蜜桃视频 | 日韩一区二区电影在线| 欧美精品一二三四| 欧美精品黑人性xxxx| 欧美日韩国产综合一区二区| 欧美性极品少妇| 欧美色视频在线| 欧美色成人综合| 制服丝袜亚洲色图| 制服丝袜中文字幕一区| 精品精品欲导航| 久久中文字幕电影| 国产欧美视频在线观看| 久久综合九色综合97婷婷| 亚洲情趣在线观看| 亚洲一区在线观看免费| 亚洲欧美精品午睡沙发| 亚洲精品乱码久久久久久| 一区二区不卡在线播放| 国产成人在线视频网站| 国产成人在线视频网站| www.亚洲色图| 欧美日韩中字一区| 91麻豆精品国产91久久久久久| 精品国产三级a在线观看| 国产日韩欧美不卡| 亚洲欧美日韩在线不卡| 亚洲3atv精品一区二区三区| 久久不见久久见免费视频7 | 亚洲成a人v欧美综合天堂| 日韩中文字幕91| 国产中文字幕精品| 成人免费va视频| 欧美日韩国产影片| 久久蜜桃av一区精品变态类天堂 | a级高清视频欧美日韩| 色欧美日韩亚洲| 欧美一级生活片| 国产欧美精品一区二区三区四区 | 亚洲高清一区二区三区| 蜜桃精品视频在线观看| av一二三不卡影片| 欧美日韩国产高清一区二区三区| 精品国产一区二区三区久久影院| 国产精品天干天干在观线| 亚洲一级二级三级| 国产精品一级黄| 欧美日韩视频第一区| 国产日韩欧美综合在线| 亚洲一区二区av电影| 国产激情一区二区三区| 欧美日韩免费高清一区色橹橹| ww久久中文字幕| 亚洲电影在线播放| 成人精品亚洲人成在线| 精品视频免费在线| 国产视频一区二区在线观看| 五月综合激情网| 99久久99久久精品免费看蜜桃| 欧美一三区三区四区免费在线看| 麻豆成人久久精品二区三区小说| 99久久综合狠狠综合久久| 日韩欧美激情四射| 亚洲图片一区二区| 99久久综合精品| 欧美激情中文字幕一区二区| 日本aⅴ免费视频一区二区三区| 99国产精品久久久久久久久久| 精品粉嫩超白一线天av| 午夜精品影院在线观看| 99久久国产综合精品麻豆| 久久久久国产精品厨房| 日韩精品欧美精品| 一本色道久久综合亚洲aⅴ蜜桃| 国产欧美一区二区三区网站| 裸体一区二区三区| 欧美天堂亚洲电影院在线播放| 国产精品国产自产拍高清av| 国产成人免费视频精品含羞草妖精| 欧美一区永久视频免费观看| 亚洲成人一区在线| 在线亚洲一区二区| 亚洲美女淫视频| 91视频在线观看| 国产日韩精品一区| 国v精品久久久网| 欧美精品一区二区不卡| 九一九一国产精品| 日韩欧美一区在线观看| 免费的成人av| 日韩一区二区三区电影| 日韩精品午夜视频| 91精品国产欧美一区二区18| 五月婷婷综合网| 91精品国产综合久久香蕉麻豆| 丝瓜av网站精品一区二区| 在线观看欧美日本| 一区二区三区欧美日| 91成人国产精品| 丝袜美腿成人在线| 日韩一区二区三区视频在线 | 国产日韩欧美不卡在线| 国产精品77777| 国产精品污www在线观看| 成人开心网精品视频| 日韩理论片一区二区| 欧洲一区在线观看| 五月天精品一区二区三区| 欧美一区二区三区在线| 蜜臀久久久久久久| 久久嫩草精品久久久精品一| 国产露脸91国语对白| 中文字幕+乱码+中文字幕一区| 91丨九色丨蝌蚪丨老版| 亚洲一二三区在线观看| 欧美一区二区三区在线看| 国产福利一区在线| 亚洲婷婷综合色高清在线| 欧美天堂亚洲电影院在线播放| 日韩国产在线观看| 国产午夜精品久久| 99久久99久久精品免费看蜜桃 | 日韩欧美一区二区视频| 国产精选一区二区三区 | 亚洲国产三级在线|