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

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

?? databasemetadata.java

?? mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序
?? 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.UnsupportedEncodingException;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Types;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Locale;import java.util.Map;import java.util.StringTokenizer;import java.util.TreeMap;/** * JDBC Interface to Mysql functions * <p> * This class provides information about the database as a whole. * </p> * <p> * Many of the methods here return lists of information in ResultSets. You can * use the normal ResultSet methods such as getString and getInt to retrieve the * data from these ResultSets. If a given form of metadata is not available, * these methods show throw a SQLException. * </p> * <p> * Some of these methods take arguments that are String patterns. These methods * all have names such as fooPattern. Within a pattern String "%" means match * any substring of 0 or more characters and "_" means match any one character. * </p> *  * @author Mark Matthews * @version $Id: DatabaseMetaData.java,v 1.27.4.66 2005/05/03 18:40:39 mmatthews *          Exp $ */public class DatabaseMetaData implements java.sql.DatabaseMetaData {	protected abstract class IterateBlock {		IteratorWithCleanup iterator;		IterateBlock(IteratorWithCleanup i) {			iterator = i;		}		public void doForAll() throws SQLException {			try {				while (iterator.hasNext()) {					forEach(iterator.next());				}			} finally {				iterator.close();			}		}		abstract void forEach(Object each) throws SQLException;	}		protected abstract class IteratorWithCleanup {		abstract void close() throws SQLException;		abstract boolean hasNext() throws SQLException;		abstract Object next() throws SQLException;	}		class LocalAndReferencedColumns {		String constraintName;		List localColumnsList;		String referencedCatalog;		List referencedColumnsList;		String referencedTable;		LocalAndReferencedColumns(List localColumns, List refColumns,				String constName, String refCatalog, String refTable) {			this.localColumnsList = localColumns;			this.referencedColumnsList = refColumns;			this.constraintName = constName;			this.referencedTable = refTable;			this.referencedCatalog = refCatalog;		}	}	protected class ResultSetIterator extends IteratorWithCleanup {		int colIndex;		ResultSet resultSet;		ResultSetIterator(ResultSet rs, int index) {			resultSet = rs;			colIndex = index;		}		void close() throws SQLException {			resultSet.close();		}		boolean hasNext() throws SQLException {			return resultSet.next();		}		Object next() throws SQLException {			return resultSet.getObject(colIndex);		}	}	protected class SingleStringIterator extends IteratorWithCleanup {		boolean onFirst = true;		String value;		SingleStringIterator(String s) {			value = s;		}		void close() throws SQLException {			// not needed		}		boolean hasNext() throws SQLException {			return onFirst;		}		Object next() throws SQLException {			onFirst = false;			return value;		}	}	/**	 * Parses and represents common data type information used by various	 * column/parameter methods.	 */	class TypeDescriptor {		int bufferLength;		int charOctetLength;		Integer columnSize;		short dataType;		Integer decimalDigits;		String isNullable;		int nullability;		int numPrecRadix = 10;		String typeName;		TypeDescriptor(String typeInfo, String nullabilityInfo)				throws SQLException {			String mysqlType = "";			String fullMysqlType = null;			if (typeInfo.indexOf("(") != -1) {				mysqlType = typeInfo.substring(0, typeInfo.indexOf("("));			} else {				mysqlType = typeInfo;			}			int indexOfUnsignedInMysqlType = StringUtils.indexOfIgnoreCase(					mysqlType, "unsigned");			if (indexOfUnsignedInMysqlType != -1) {				mysqlType = mysqlType.substring(0,						(indexOfUnsignedInMysqlType - 1));			}			// Add unsigned to typename reported to enduser as 'native type', if			// present			boolean isUnsigned = false;						if (StringUtils.indexOfIgnoreCase(typeInfo, "unsigned") != -1) {				fullMysqlType = mysqlType + " unsigned";				isUnsigned = true;			} else {				fullMysqlType = mysqlType;			}			if (conn.getCapitalizeTypeNames()) {				fullMysqlType = fullMysqlType.toUpperCase(Locale.ENGLISH);			}			this.dataType = (short) MysqlDefs.mysqlToJavaType(mysqlType);			this.typeName = fullMysqlType;			// Figure Out the Size			if (typeInfo != null) {				if (StringUtils.startsWithIgnoreCase(typeInfo, "enum")) {					String temp = typeInfo.substring(typeInfo.indexOf("("),							typeInfo.lastIndexOf(")"));					java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(							temp, ",");					int maxLength = 0;					while (tokenizer.hasMoreTokens()) {						maxLength = Math.max(maxLength, (tokenizer.nextToken()								.length() - 2));					}					this.columnSize = new Integer(maxLength);					this.decimalDigits = null;				} else if (StringUtils.startsWithIgnoreCase(typeInfo, "set")) {					String temp = typeInfo.substring(typeInfo.indexOf("("),							typeInfo.lastIndexOf(")"));					java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(							temp, ",");					int maxLength = 0;					while (tokenizer.hasMoreTokens()) {						String setMember = tokenizer.nextToken().trim();						if (setMember.startsWith("'")								&& setMember.endsWith("'")) {							maxLength += setMember.length() - 2;						} else {							maxLength += setMember.length();						}					}					this.columnSize = new Integer(maxLength);					this.decimalDigits = null;				} else if (typeInfo.indexOf(",") != -1) {					// Numeric with decimals					this.columnSize = new Integer(typeInfo.substring((typeInfo							.indexOf("(") + 1), (typeInfo.indexOf(","))).trim());					this.decimalDigits = new Integer(typeInfo.substring(							(typeInfo.indexOf(",") + 1),							(typeInfo.indexOf(")"))).trim());				} else {					this.columnSize = null;					this.decimalDigits = null;					/* If the size is specified with the DDL, use that */					if ((StringUtils.indexOfIgnoreCase(typeInfo, "char") != -1							|| StringUtils.indexOfIgnoreCase(typeInfo, "text") != -1							|| StringUtils.indexOfIgnoreCase(typeInfo, "blob") != -1							|| StringUtils									.indexOfIgnoreCase(typeInfo, "binary") != -1 || StringUtils							.indexOfIgnoreCase(typeInfo, "bit") != -1)							&& typeInfo.indexOf("(") != -1) {						int endParenIndex = typeInfo.indexOf(")");						if (endParenIndex == -1) {							endParenIndex = typeInfo.length();						}						this.columnSize = new Integer(typeInfo.substring(								(typeInfo.indexOf("(") + 1), endParenIndex).trim());						// Adjust for pseudo-boolean						if (conn.getTinyInt1isBit()								&& this.columnSize.intValue() == 1								&& StringUtils.startsWithIgnoreCase(typeInfo,										0, "tinyint")) {							if (conn.getTransformedBitIsBoolean()) {								this.dataType = Types.BOOLEAN;								this.typeName = "BOOLEAN";							} else {								this.dataType = Types.BIT;								this.typeName = "BIT";							}						}					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"tinyint")) {						if (conn.getTinyInt1isBit() && typeInfo.indexOf("(1)") != -1) {							if (conn.getTransformedBitIsBoolean()) {								this.dataType = Types.BOOLEAN;								this.typeName = "BOOLEAN";							} else {								this.dataType = Types.BIT;								this.typeName = "BIT";							}						} else {							this.columnSize = new Integer(3);							this.decimalDigits = new Integer(0);						}					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"smallint")) {						this.columnSize = new Integer(5);						this.decimalDigits = new Integer(0);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"mediumint")) {						this.columnSize = new Integer(isUnsigned ? 8 : 7);						this.decimalDigits = new Integer(0);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"int")) {						this.columnSize = new Integer(10);						this.decimalDigits = new Integer(0);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"integer")) {						this.columnSize = new Integer(10);						this.decimalDigits = new Integer(0);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"bigint")) {						this.columnSize = new Integer(isUnsigned ? 20 : 19);						this.decimalDigits = new Integer(0);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"int24")) {						this.columnSize = new Integer(19);						this.decimalDigits = new Integer(0);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"real")) {						this.columnSize = new Integer(12);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"float")) {						this.columnSize = new Integer(12);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"decimal")) {						this.columnSize = new Integer(12);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"numeric")) {						this.columnSize = new Integer(12);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"double")) {						this.columnSize = new Integer(22);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"char")) {						this.columnSize = new Integer(1);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"varchar")) {						this.columnSize = new Integer(255);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"date")) {						this.columnSize = null;					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"time")) {						this.columnSize = null;					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"timestamp")) {						this.columnSize = null;					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"datetime")) {						this.columnSize = null;					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"tinyblob")) {						this.columnSize = new Integer(255);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"blob")) {						this.columnSize = new Integer(65535);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"mediumblob")) {						this.columnSize = new Integer(16777215);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"longblob")) {						this.columnSize = new Integer(Integer.MAX_VALUE);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"tinytext")) {						this.columnSize = new Integer(255);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"text")) {						this.columnSize = new Integer(65535);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"mediumtext")) {						this.columnSize = new Integer(16777215);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"longtext")) {						this.columnSize = new Integer(Integer.MAX_VALUE);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"enum")) {						this.columnSize = new Integer(255);					} else if (StringUtils.startsWithIgnoreCaseAndWs(typeInfo,							"set")) {						this.columnSize = new Integer(255);					}				}			} else {				this.decimalDigits = null;				this.columnSize = null;			}			// BUFFER_LENGTH			this.bufferLength = MysqlIO.getMaxBuf();			// NUM_PREC_RADIX (is this right for char?)			this.numPrecRadix = 10;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久闺蜜| 97精品视频在线观看自产线路二| 日韩欧美在线综合网| 视频一区视频二区在线观看| 3atv在线一区二区三区| 久久国产婷婷国产香蕉| 国产亚洲成aⅴ人片在线观看 | 欧洲精品在线观看| 亚洲香肠在线观看| 日韩免费在线观看| 成人免费视频视频| 亚洲综合在线电影| 日韩三级免费观看| 成人在线视频一区二区| 亚洲精品五月天| 91精品国产福利在线观看| 国产精品 日产精品 欧美精品| 国产精品二三区| 欧美精品亚洲一区二区在线播放| 国产精品综合在线视频| 亚洲品质自拍视频| 欧美成人aa大片| 99精品国产热久久91蜜凸| 日韩av二区在线播放| 中文字幕国产一区二区| 欧美午夜精品久久久久久超碰| 久久精品国内一区二区三区| 国产精品国产三级国产有无不卡 | 99精品视频在线免费观看| 午夜成人免费电影| 中文字幕乱码久久午夜不卡| 制服丝袜av成人在线看| 国产**成人网毛片九色 | 日本在线观看不卡视频| 国产精品久久久久婷婷| 欧美精品久久99久久在免费线| 国产综合久久久久久久久久久久 | 日本成人中文字幕在线视频| 中文字幕精品在线不卡| 欧美一区二区三区不卡| 99精品视频在线免费观看| 精品一区免费av| 亚洲最大成人综合| 国产精品美日韩| 精品美女一区二区| 欧美日韩精品一二三区| 成av人片一区二区| 国产精品69毛片高清亚洲| 亚洲国产色一区| 亚洲美女精品一区| 国产精品大尺度| 国产日韩欧美电影| 精品福利在线导航| 777久久久精品| 91福利在线观看| 成人精品视频网站| 国产麻豆日韩欧美久久| 免费成人在线播放| 亚洲超碰精品一区二区| 亚洲免费色视频| 国产精品妹子av| 国产拍揄自揄精品视频麻豆| 精品久久久久一区| 日韩免费看网站| 欧美一区午夜精品| 欧美伦理影视网| 欧美日韩在线三级| 欧美午夜精品一区二区蜜桃| 在线观看网站黄不卡| 一道本成人在线| 91视频在线观看| 色噜噜久久综合| 91久久奴性调教| 色88888久久久久久影院按摩 | 国产精品女人毛片| 国产欧美日韩在线| 欧美激情一区二区三区| 日本一区二区三区国色天香| 国产日韩av一区二区| 中文字幕 久热精品 视频在线 | 亚洲综合自拍偷拍| 亚洲高清视频中文字幕| 亚洲第一福利视频在线| 亚洲va欧美va国产va天堂影院| 五月综合激情网| 蜜臀国产一区二区三区在线播放| 久久国产精品色婷婷| 国产在线精品不卡| 夫妻av一区二区| 色综合天天综合狠狠| 在线免费观看日本欧美| 欧美日韩国产成人在线91| 91精品国产综合久久久久久| 日韩视频123| 欧美激情一区三区| 亚洲色大成网站www久久九九| 亚洲精选视频在线| 日一区二区三区| 国内国产精品久久| 95精品视频在线| 欧美日韩国产综合一区二区三区 | 欧美中文字幕一区二区三区亚洲| 欧美在线|欧美| 日韩亚洲欧美在线观看| 国产欧美一区二区精品性色 | 在线观看一区不卡| 欧美成人综合网站| 中文字幕一区二区三区在线不卡 | 欧美国产一区在线| 亚洲小少妇裸体bbw| 国内欧美视频一区二区| 91在线一区二区| 91精品国产高清一区二区三区| 久久久久久久久97黄色工厂| 一区二区在线观看免费 | 国产美女一区二区三区| 色婷婷国产精品| 日韩欧美成人激情| 专区另类欧美日韩| 青青草国产精品亚洲专区无| aaa国产一区| 欧美一二三四区在线| 国产精品黄色在线观看| 美女国产一区二区三区| 99国产精品久久久久久久久久久| 制服丝袜av成人在线看| 亚洲欧美日韩中文播放| 久久99精品国产91久久来源| 在线观看一区不卡| 日本一区二区动态图| 日韩精品欧美精品| 97se亚洲国产综合自在线| 精品卡一卡二卡三卡四在线| 亚洲精品成人精品456| 国产精品一区二区黑丝| 欧美理论电影在线| 亚洲男人电影天堂| 国产成人综合在线播放| 日韩一区二区三区免费观看| 亚洲免费在线播放| www.亚洲色图.com| 久久久国产综合精品女国产盗摄| 视频在线观看一区二区三区| 色综合视频在线观看| 中文字幕欧美区| 国产美女精品在线| 欧美mv和日韩mv国产网站| 天天亚洲美女在线视频| 日本韩国视频一区二区| 国产精品久久久久影院老司| 精品一区二区三区在线观看国产| 欧美日韩极品在线观看一区| 亚洲综合在线第一页| 色激情天天射综合网| 中文字幕一区二| 成人高清在线视频| 国产亚洲成av人在线观看导航| 极品少妇xxxx精品少妇偷拍| 欧美一卡二卡在线| 三级成人在线视频| 91精品免费在线观看| 性做久久久久久免费观看 | 91精品国产乱码| 日韩精品视频网站| 91精品国产综合久久久久久久久久| 亚洲大片一区二区三区| 欧美日本不卡视频| 日韩和欧美一区二区| 日韩一级欧美一级| 九色综合狠狠综合久久| 精品第一国产综合精品aⅴ| 美女爽到高潮91| 精品美女一区二区| 国产盗摄视频一区二区三区| 日本一区二区三区电影| 成人精品免费看| 亚洲精品国产精品乱码不99| 色欧美日韩亚洲| 图片区日韩欧美亚洲| 91麻豆精品国产91久久久资源速度| 日韩国产在线观看| 日韩视频在线观看一区二区| 久久成人久久鬼色| 国产精品全国免费观看高清| 99久久精品费精品国产一区二区| 亚洲精品高清在线| 7777精品伊人久久久大香线蕉 | 久久av中文字幕片| 国产日韩一级二级三级| 99精品视频在线免费观看| 亚洲国产一区二区三区| 在线电影院国产精品| 狠狠色综合日日| 国产精品久久久久婷婷二区次 | 欧美一区二区三级| 国产精品99久| 亚洲综合激情另类小说区| 91精品黄色片免费大全| 丁香六月综合激情| 亚洲高清免费观看|