📄 field.java
字号:
/** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getFullName() throws SQLException { if (this.fullName == null) { StringBuffer fullNameBuf = new StringBuffer(getTableName().length() + 1 + getName().length()); fullNameBuf.append(this.tableName); // much faster to append a char than a String fullNameBuf.append('.'); fullNameBuf.append(this.name); this.fullName = fullNameBuf.toString(); fullNameBuf = null; } return this.fullName; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getFullOriginalName() throws SQLException { getOriginalName(); if (this.originalColumnName == null) { return null; // we don't have this information } if (this.fullName == null) { StringBuffer fullOriginalNameBuf = new StringBuffer( getOriginalTableName().length() + 1 + getOriginalName().length()); fullOriginalNameBuf.append(this.originalTableName); // much faster to append a char than a String fullOriginalNameBuf.append('.'); fullOriginalNameBuf.append(this.originalColumnName); this.fullOriginalName = fullOriginalNameBuf.toString(); fullOriginalNameBuf = null; } return this.fullOriginalName; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public long getLength() { return this.length; } public synchronized int getMaxBytesPerCharacter() throws SQLException { if (this.maxBytesPerChar == 0) { this.maxBytesPerChar = this.connection.getMaxBytesPerChar(getCharacterSet()); } return this.maxBytesPerChar; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public int getMysqlType() { return this.mysqlType; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getName() throws SQLException { if (this.name == null) { this.name = getStringFromBytes(this.nameStart, this.nameLength); } return this.name; } public String getNameNoAliases() throws SQLException { if (this.useOldNameMetadata) { return getName(); } if (this.connection != null && this.connection.versionMeetsMinimum(4, 1, 0)) { return getOriginalName(); } return getName(); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getOriginalName() throws SQLException { if ((this.originalColumnName == null) && (this.originalColumnNameStart != -1) && (this.originalColumnNameLength != -1)) { this.originalColumnName = getStringFromBytes( this.originalColumnNameStart, this.originalColumnNameLength); } return this.originalColumnName; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getOriginalTableName() throws SQLException { if ((this.originalTableName == null) && (this.originalTableNameStart != -1) && (this.originalTableNameLength != -1)) { this.originalTableName = getStringFromBytes( this.originalTableNameStart, this.originalTableNameLength); } return this.originalTableName; } /** * Returns amount of correction that should be applied to the precision * value. * * Different versions of MySQL report different precision values. * * @return the amount to adjust precision value by. */ public int getPrecisionAdjustFactor() { return this.precisionAdjustFactor; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public int getSQLType() { return this.sqlType; } /** * Create a string with the correct charset encoding from the byte-buffer * that contains the data for this field */ private String getStringFromBytes(int stringStart, int stringLength) throws SQLException { if ((stringStart == -1) || (stringLength == -1)) { return null; } String stringVal = null; if (this.connection != null) { if (this.connection.getUseUnicode()) { String encoding = this.connection.getCharacterSetMetadata(); if (encoding == null) { encoding = connection.getEncoding(); } if (encoding != null) { SingleByteCharsetConverter converter = null; if (this.connection != null) { converter = this.connection .getCharsetConverter(encoding); } if (converter != null) { // we have a converter stringVal = converter.toString(this.buffer, stringStart, stringLength); } else { // we have no converter, use JVM converter byte[] stringBytes = new byte[stringLength]; int endIndex = stringStart + stringLength; int pos = 0; for (int i = stringStart; i < endIndex; i++) { stringBytes[pos++] = this.buffer[i]; } try { stringVal = new String(stringBytes, encoding); } catch (UnsupportedEncodingException ue) { throw new RuntimeException(Messages .getString("Field.12") + encoding //$NON-NLS-1$ + Messages.getString("Field.13")); //$NON-NLS-1$ } } } else { // we have no encoding, use JVM standard charset stringVal = StringUtils.toAsciiString(this.buffer, stringStart, stringLength); } } else { // we are not using unicode, so use JVM standard charset stringVal = StringUtils.toAsciiString(this.buffer, stringStart, stringLength); } } else { // we don't have a connection, so punt stringVal = StringUtils.toAsciiString(this.buffer, stringStart, stringLength); } return stringVal; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getTable() throws SQLException { return getTableName(); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getTableName() throws SQLException { if (this.tableName == null) { this.tableName = getStringFromBytes(this.tableNameStart, this.tableNameLength); } return this.tableName; } public String getTableNameNoAliases() throws SQLException { if (this.connection.versionMeetsMinimum(4, 1, 0)) { return getOriginalTableName(); } return getTableName(); // pre-4.1, no aliases returned } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isAutoIncrement() { return ((this.colFlag & AUTO_INCREMENT_FLAG) > 0); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isBinary() { return ((this.colFlag & 128) > 0); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isBlob() { return ((this.colFlag & 16) > 0); } /** * Is this field owned by a server-created temporary table? * * @return */ private boolean isImplicitTemporaryTable() { return this.isImplicitTempTable; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isMultipleKey() { return ((this.colFlag & 8) > 0); } boolean isNotNull() { return ((this.colFlag & 1) > 0); } boolean isOpaqueBinary() throws SQLException { // // Detect CHAR(n) CHARACTER SET BINARY which is a synonym for // fixed-length binary types // if (this.charsetIndex == 63 && isBinary() && (this.getMysqlType() == MysqlDefs.FIELD_TYPE_STRING || this.getMysqlType() == MysqlDefs.FIELD_TYPE_VAR_STRING)) { if (this.originalTableNameLength == 0 && ( this.connection != null && !this.connection.versionMeetsMinimum(5, 0, 25))) { return false; // Probably from function } // Okay, queries resolved by temp tables also have this 'signature', // check for that return !isImplicitTemporaryTable(); } return (this.connection.versionMeetsMinimum(4, 1, 0) && "binary" .equalsIgnoreCase(getCharacterSet())); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isPrimaryKey() { return ((this.colFlag & 2) > 0); } /** * Is this field _definitely_ not writable? * * @return true if this field can not be written to in an INSERT/UPDATE * statement. */ boolean isReadOnly() throws SQLException { if (this.connection.versionMeetsMinimum(4, 1, 0)) { String orgColumnName = getOriginalName(); String orgTableName = getOriginalTableName(); return !(orgColumnName != null && orgColumnName.length() > 0 && orgTableName != null && orgTableName.length() > 0); } return false; // we can't tell definitively in this case. } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isUniqueKey() { return ((this.colFlag & 4) > 0); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isUnsigned() { return ((this.colFlag & 32) > 0); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isZeroFill() { return ((this.colFlag & 64) > 0); } // // MySQL only has one protocol-level BLOB type that it exposes // which is FIELD_TYPE_BLOB, although we can divine what the // actual type is by the length reported ... // private void setBlobTypeBasedOnLength() { if (this.length == MysqlDefs.LENGTH_TINYBLOB) { this.mysqlType = MysqlDefs.FIELD_TYPE_TINY_BLOB; } else if (this.length == MysqlDefs.LENGTH_BLOB) { this.mysqlType = MysqlDefs.FIELD_TYPE_BLOB; } else if (this.length == MysqlDefs.LENGTH_MEDIUMBLOB) { this.mysqlType = MysqlDefs.FIELD_TYPE_MEDIUM_BLOB; } else if (this.length == MysqlDefs.LENGTH_LONGBLOB) { this.mysqlType = MysqlDefs.FIELD_TYPE_LONG_BLOB; } } private boolean isNativeNumericType() { return ((this.mysqlType >= MysqlDefs.FIELD_TYPE_TINY && this.mysqlType <= MysqlDefs.FIELD_TYPE_DOUBLE) || this.mysqlType == MysqlDefs.FIELD_TYPE_LONGLONG || this.mysqlType == MysqlDefs.FIELD_TYPE_YEAR); } private boolean isNativeDateTimeType() { return (this.mysqlType == MysqlDefs.FIELD_TYPE_DATE || this.mysqlType == MysqlDefs.FIELD_TYPE_NEWDATE || this.mysqlType == MysqlDefs.FIELD_TYPE_DATETIME || this.mysqlType == MysqlDefs.FIELD_TYPE_TIME || this.mysqlType == MysqlDefs.FIELD_TYPE_TIMESTAMP); } /** * DOCUMENT ME! * * @param conn * DOCUMENT ME! */ public void setConnection(ConnectionImpl conn) { this.connection = conn; if (this.charsetName == null || this.charsetIndex == 0) { this.charsetName = this.connection.getEncoding(); } } void setMysqlType(int type) { this.mysqlType = type; this.sqlType = MysqlDefs.mysqlToJavaType(this.mysqlType); } protected void setUseOldNameMetadata(boolean useOldNameMetadata) { this.useOldNameMetadata = useOldNameMetadata; } public String toString() { try { StringBuffer asString = new StringBuffer(); asString.append(super.toString()); asString.append("["); asString.append("catalog="); asString.append(this.getDatabaseName()); asString.append(",tableName="); asString.append(this.getTableName()); asString.append(",originalTableName="); asString.append(this.getOriginalTableName()); asString.append(",columnName="); asString.append(this.getName()); asString.append(",originalColumnName="); asString.append(this.getOriginalName()); asString.append(",mysqlType="); asString.append(getMysqlType()); asString.append("("); asString.append(MysqlDefs.typeToName(getMysqlType())); asString.append(")"); asString.append(",flags="); if (isAutoIncrement()) { asString.append(" AUTO_INCREMENT"); } if (isPrimaryKey()) { asString.append(" PRIMARY_KEY"); } if (isUniqueKey()) { asString.append(" UNIQUE_KEY"); } if (isBinary()) { asString.append(" BINARY"); } if (isBlob()) { asString.append(" BLOB"); } if (isMultipleKey()) { asString.append(" MULTI_KEY"); } if (isUnsigned()) { asString.append(" UNSIGNED"); } if (isZeroFill()) { asString.append(" ZEROFILL"); } asString.append(", charsetIndex="); asString.append(this.charsetIndex); asString.append(", charsetName="); asString.append(this.charsetName); //if (this.buffer != null) { // asString.append("\n\nData as received from server:\n\n"); // asString.append(StringUtils.dumpAsHex(this.buffer, // this.buffer.length)); //} asString.append("]"); return asString.toString(); } catch (Throwable t) { return super.toString(); } } protected boolean isSingleBit() { return this.isSingleBit; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -