⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resultsetmetadata.java

📁 开发MySql数据库的最新JDBC驱动。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	 * What is a column's number of decimal digits.	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return the precision	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public int getPrecision(int column) throws SQLException {		Field f = getField(column);		// if (f.getMysqlType() == MysqlDefs.FIELD_TYPE_NEW_DECIMAL) {		// return f.getLength();		// }		if (isDecimalType(f.getSQLType())) {			if (f.getDecimals() > 0) {				return clampedGetLength(f) - 1 + f.getPrecisionAdjustFactor();			}			return clampedGetLength(f) + f.getPrecisionAdjustFactor();		}		switch (f.getMysqlType()) {		case MysqlDefs.FIELD_TYPE_TINY_BLOB:		case MysqlDefs.FIELD_TYPE_BLOB:		case MysqlDefs.FIELD_TYPE_MEDIUM_BLOB:		case MysqlDefs.FIELD_TYPE_LONG_BLOB:			return clampedGetLength(f); // this may change in the future		// for now, the server only		// returns FIELD_TYPE_BLOB for _all_		// BLOB types, but varying lengths		// indicating the _maximum_ size		// for each BLOB type.		default:			return clampedGetLength(f) / f.getMaxBytesPerCharacter();		}	}	/**	 * What is a column's number of digits to the right of the decimal point?	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return the scale	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public int getScale(int column) throws SQLException {		Field f = getField(column);		if (isDecimalType(f.getSQLType())) {			return f.getDecimals();		}		return 0;	}	/**	 * What is a column's table's schema? This relies on us knowing the table	 * name. The JDBC specification allows us to return "" if this is not	 * applicable.	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return the Schema	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public String getSchemaName(int column) throws SQLException {		return ""; //$NON-NLS-1$	}	/**	 * Whats a column's table's name?	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return column name, or "" if not applicable	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public String getTableName(int column) throws SQLException {		if (this.useOldAliasBehavior) {			return getField(column).getTableName();		}				return getField(column).getTableNameNoAliases();	}	/**	 * Is the column automatically numbered (and thus read-only)	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return true if so	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public boolean isAutoIncrement(int column) throws SQLException {		Field f = getField(column);		return f.isAutoIncrement();	}	/**	 * Does a column's case matter?	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return true if so	 * 	 * @throws java.sql.SQLException	 *             if a database access error occurs	 */	public boolean isCaseSensitive(int column) throws java.sql.SQLException {		Field field = getField(column);		int sqlType = field.getSQLType();		switch (sqlType) {		case Types.BIT:		case Types.TINYINT:		case Types.SMALLINT:		case Types.INTEGER:		case Types.BIGINT:		case Types.FLOAT:		case Types.REAL:		case Types.DOUBLE:		case Types.DATE:		case Types.TIME:		case Types.TIMESTAMP:			return false;		case Types.CHAR:		case Types.VARCHAR:		case Types.LONGVARCHAR:			if (field.isBinary()) {				return true;			}			String collationName = field.getCollation();			return ((collationName != null) && !collationName.endsWith("_ci"));		default:			return true;		}	}	/**	 * Is the column a cash value?	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return true if its a cash column	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public boolean isCurrency(int column) throws SQLException {		return false;	}	/**	 * Will a write on this column definately succeed?	 * 	 * @param column	 *            the first column is 1, the second is 2, etc..	 * 	 * @return true if so	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public boolean isDefinitelyWritable(int column) throws SQLException {		return isWritable(column);	}	/**	 * Can you put a NULL in this column?	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return one of the columnNullable values	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public int isNullable(int column) throws SQLException {		if (!getField(column).isNotNull()) {			return java.sql.ResultSetMetaData.columnNullable;		}		return java.sql.ResultSetMetaData.columnNoNulls;	}	/**	 * Is the column definitely not writable?	 * 	 * @param column	 *            the first column is 1, the second is 2, etc.	 * 	 * @return true if so	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public boolean isReadOnly(int column) throws SQLException {		return getField(column).isReadOnly();	}	/**	 * Can the column be used in a WHERE clause? Basically for this, I split the	 * functions into two types: recognised types (which are always useable),	 * and OTHER types (which may or may not be useable). The OTHER types, for	 * now, I will assume they are useable. We should really query the catalog	 * to see if they are useable.	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return true if they can be used in a WHERE clause	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public boolean isSearchable(int column) throws SQLException {		return true;	}	/**	 * Is the column a signed number?	 * 	 * @param column	 *            the first column is 1, the second is 2...	 * 	 * @return true if so	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public boolean isSigned(int column) throws SQLException {		Field f = getField(column);		int sqlType = f.getSQLType();		switch (sqlType) {		case Types.TINYINT:		case Types.SMALLINT:		case Types.INTEGER:		case Types.BIGINT:		case Types.FLOAT:		case Types.REAL:		case Types.DOUBLE:		case Types.NUMERIC:		case Types.DECIMAL:			return !f.isUnsigned();		case Types.DATE:		case Types.TIME:		case Types.TIMESTAMP:			return false;		default:			return false;		}	}	/**	 * Is it possible for a write on the column to succeed?	 * 	 * @param column	 *            the first column is 1, the second is 2, etc.	 * 	 * @return true if so	 * 	 * @throws SQLException	 *             if a database access error occurs	 */	public boolean isWritable(int column) throws SQLException {		return !isReadOnly(column);	}	/**	 * Returns a string representation of this object	 * 	 * @return ...	 */	public String toString() {		StringBuffer toStringBuf = new StringBuffer();		toStringBuf.append(super.toString());		toStringBuf.append(" - Field level information: "); //$NON-NLS-1$		for (int i = 0; i < this.fields.length; i++) {			toStringBuf.append("\n\t"); //$NON-NLS-1$			toStringBuf.append(this.fields[i].toString());		}		return toStringBuf.toString();	}		static String getClassNameForJavaType(int javaType, 			boolean isUnsigned, int mysqlTypeIfKnown, 			boolean isBinaryOrBlob,			boolean isOpaqueBinary) {		switch (javaType) {		case Types.BIT:		case Types.BOOLEAN:			return "java.lang.Boolean"; //$NON-NLS-1$		case Types.TINYINT:			if (isUnsigned) {				return "java.lang.Integer"; //$NON-NLS-1$			}			return "java.lang.Integer"; //$NON-NLS-1$		case Types.SMALLINT:			if (isUnsigned) {				return "java.lang.Integer"; //$NON-NLS-1$			}			return "java.lang.Integer"; //$NON-NLS-1$		case Types.INTEGER:			if (!isUnsigned || 					mysqlTypeIfKnown == MysqlDefs.FIELD_TYPE_INT24) {				return "java.lang.Integer"; //$NON-NLS-1$			}			return "java.lang.Long"; //$NON-NLS-1$		case Types.BIGINT:			if (!isUnsigned) {				return "java.lang.Long"; //$NON-NLS-1$			}			return "java.math.BigInteger"; //$NON-NLS-1$		case Types.DECIMAL:		case Types.NUMERIC:			return "java.math.BigDecimal"; //$NON-NLS-1$		case Types.REAL:			return "java.lang.Float"; //$NON-NLS-1$		case Types.FLOAT:		case Types.DOUBLE:			return "java.lang.Double"; //$NON-NLS-1$		case Types.CHAR:		case Types.VARCHAR:		case Types.LONGVARCHAR:			if (!isOpaqueBinary) {				return "java.lang.String"; //$NON-NLS-1$			}			return "[B";		case Types.BINARY:		case Types.VARBINARY:		case Types.LONGVARBINARY:			if (mysqlTypeIfKnown == MysqlDefs.FIELD_TYPE_GEOMETRY) {				return "[B";			} else if (isBinaryOrBlob) {				return "[B";			} else {				return "java.lang.String";			}		case Types.DATE:			return "java.sql.Date"; //$NON-NLS-1$		case Types.TIME:			return "java.sql.Time"; //$NON-NLS-1$		case Types.TIMESTAMP:			return "java.sql.Timestamp"; //$NON-NLS-1$		default:			return "java.lang.Object"; //$NON-NLS-1$		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -