本文整理汇总了Java中org.apache.ddlutils.platform.DatabaseMetaDataWrapper类的典型用法代码示例。如果您正苦于以下问题:Java DatabaseMetaDataWrapper类的具体用法?Java DatabaseMetaDataWrapper怎么用?Java DatabaseMetaDataWrapper使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
DatabaseMetaDataWrapper类属于org.apache.ddlutils.platform包,在下文中一共展示了DatabaseMetaDataWrapper类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: readPrimaryKeyNames
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
private static Collection<String> readPrimaryKeyNames(DatabaseMetaDataWrapper metaData, String tableName)
throws SQLException {
ResultSet pkData = null;
try {
List<String> pks = new ArrayList<String>();
Map<String, Object> values;
for (pkData = metaData.getPrimaryKeys(tableName); pkData.next(); pks.add(readPrimaryKeyName(metaData,
values))) {
values = readColumns(pkData, initColumnsForPK());
}
return pks;
} finally {
JdbcUtils.closeResultSet(pkData);
}
}
示例2: readColumn
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
{
Column column = super.readColumn(metaData, values);
String defaultValue = column.getDefaultValue();
if (defaultValue != null)
{
// we check for these strings
// GENERATED_BY_DEFAULT -> 'GENERATED BY DEFAULT AS IDENTITY'
// AUTOINCREMENT: start 1 increment 1 -> 'GENERATED ALWAYS AS IDENTITY'
if ("GENERATED_BY_DEFAULT".equals(defaultValue) || defaultValue.startsWith("AUTOINCREMENT:"))
{
column.setDefaultValue(null);
column.setAutoIncrement(true);
}
else if (TypeMap.isTextType(column.getTypeCode()))
{
column.setDefaultValue(unescape(defaultValue, "'", "''"));
}
}
return column;
}
示例3: readColumn
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
{
Column column = super.readColumn(metaData, values);
if (column.getDefaultValue() != null)
{
// SapDb pads the default value with spaces
column.setDefaultValue(column.getDefaultValue().trim());
// SapDb uses the default value for the auto-increment specification
if (column.getDefaultValue().startsWith("DEFAULT SERIAL"))
{
column.setAutoIncrement(true);
column.setDefaultValue(null);
}
}
if (column.getTypeCode() == Types.DECIMAL)
{
// We also perform back-mapping to BIGINT
if ((column.getSizeAsInt() == 38) && (column.getScale() == 0))
{
column.setTypeCode(Types.BIGINT);
}
}
return column;
}
示例4: removeSystemIndices
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected void removeSystemIndices(DatabaseMetaDataWrapper metaData, Table table) throws SQLException
{
// Axion's JDBC driver does not support primary key reading, so we have to filter at this level
for (int indexIdx = 0; indexIdx < table.getIndexCount();)
{
Index index = table.getIndex(indexIdx);
// also, Axion's internal indices are not unique
if (index.getName().startsWith("SYS_"))
{
table.removeIndex(indexIdx);
}
else
{
indexIdx++;
}
}
}
示例5: readTable
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Table readTable(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
{
String tableName = (String)values.get("TABLE_NAME");
for (int idx = 0; idx < KNOWN_SYSTEM_TABLES.length; idx++)
{
if (KNOWN_SYSTEM_TABLES[idx].equals(tableName))
{
return null;
}
}
Table table = super.readTable(metaData, values);
if (table != null)
{
// Db2 does not return the auto-increment status via the database metadata
determineAutoIncrementColumns(table);
}
return table;
}
示例6: readTable
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Table readTable(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
{
String tableName = (String)values.get("TABLE_NAME");
// system table ?
if (tableName.indexOf('$') > 0)
{
return null;
}
Table table = super.readTable(metaData, values);
if (table != null)
{
determineAutoIncrementColumns(table);
}
return table;
}
示例7: readIndex
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected void readIndex(DatabaseMetaDataWrapper metaData, Map values, Map knownIndices) throws SQLException
{
if (getPlatform().isDelimitedIdentifierModeOn())
{
String indexName = (String)values.get("INDEX_NAME");
// Sometimes, Sybase keeps the delimiter quotes around the index names
// when returning them in the metadata, so we strip them
if (indexName != null)
{
String delimiter = getPlatformInfo().getDelimiterToken();
if ((indexName != null) && indexName.startsWith(delimiter) && indexName.endsWith(delimiter))
{
indexName = indexName.substring(delimiter.length(), indexName.length() - delimiter.length());
values.put("INDEX_NAME", indexName);
}
}
}
super.readIndex(metaData, values, knownIndices);
}
示例8: isInternalPrimaryKeyIndex
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected boolean isInternalPrimaryKeyIndex(DatabaseMetaDataWrapper metaData, Table table, Index index) throws SQLException
{
// We can simply check the sysindexes table where a specific flag is set for pk indexes
final String query = "SELECT name = sysindexes.name FROM sysindexes, sysobjects WHERE sysobjects.name = ? " +
"AND sysindexes.name = ? AND sysobjects.id = sysindexes.id AND (sysindexes.status & 2048) > 0";
PreparedStatement stmt = null;
try
{
stmt = getConnection().prepareStatement(query);
stmt.setString(1, table.getName());
stmt.setString(2, index.getName());
ResultSet rs = stmt.executeQuery();
return rs.next();
}
finally
{
closeStatement(stmt);
}
}
示例9: readTable
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Table readTable(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
{
Table table = super.readTable(metaData, values);
if (table != null)
{
// For at least version 1.7.2 we have to determine the auto-increment columns
// from a result set meta data because the database does not put this info
// into the database metadata
// Since Hsqldb only allows IDENTITY for primary key columns, we restrict
// our search to those columns
determineAutoIncrementFromResultSetMetaData(table, table.getPrimaryKeyColumns());
}
return table;
}
示例10: readTable
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Table readTable(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
{
String tableName = (String)values.get("TABLE_NAME");
for (int idx = 0; idx < KNOWN_SYSTEM_TABLES.length; idx++)
{
if (KNOWN_SYSTEM_TABLES[idx].equals(tableName))
{
return null;
}
}
Table table = super.readTable(metaData, values);
if (table != null)
{
// Db2 does not return the auto-increment status via the database metadata
determineAutoIncrementFromResultSetMetaData(table, table.getColumns());
}
return table;
}
示例11: existsPKWithName
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* Determines whether there is a pk for the table with the given name.
*
* @param metaData The database metadata
* @param table The table
* @param name The pk name
* @return <code>true</code> if there is such a pk
*/
private boolean existsPKWithName(DatabaseMetaDataWrapper metaData, Table table, String name)
{
try
{
ResultSet pks = metaData.getPrimaryKeys(table.getName());
boolean found = false;
while (pks.next() && !found)
{
if (name.equals(pks.getString("PK_NAME")))
{
found = true;
}
}
pks.close();
return found;
}
catch (SQLException ex)
{
throw new DdlUtilsException(ex);
}
}
示例12: readColumn
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
{
Column column = super.readColumn(metaData, values);
if (column.getDefaultValue() != null)
{
// SapDb pads the default value with spaces
column.setDefaultValue(column.getDefaultValue().trim());
// SapDb uses the default value for the auto-increment specification
if (column.getDefaultValue().startsWith("DEFAULT SERIAL"))
{
column.setAutoIncrement(true);
column.setDefaultValue(null);
}
}
if (column.getTypeCode() == Types.DECIMAL)
{
// need to use COLUMN_SIZE for precision instead of NUM_PREC_RADIX
column.setPrecisionRadix(column.getSizeAsInt());
// We also perform back-mapping to BIGINT
if ((column.getSizeAsInt() == 38) && (column.getScale() == 0))
{
column.setTypeCode(Types.BIGINT);
}
}
return column;
}
示例13: readTable
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Table readTable(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
{
Table table = super.readTable(metaData, values);
if (table != null)
{
determineAutoIncrementColumns(table);
}
return table;
}
示例14: readColumn
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
{
Column column = super.readColumn(metaData, values);
if (column.getTypeCode() == Types.FLOAT)
{
column.setTypeCode(Types.REAL);
}
else if (TypeMap.isTextType(column.getTypeCode()))
{
column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''"));
}
return column;
}
示例15: readIndices
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
protected Collection readIndices(DatabaseMetaDataWrapper metaData, String tableName) throws SQLException
{
// Jaybird is not able to read indices when delimited identifiers are turned on,
// so we gather the data manually using Firebird's system tables
final String query =
"SELECT a.RDB$INDEX_NAME INDEX_NAME, b.RDB$RELATION_NAME TABLE_NAME, b.RDB$UNIQUE_FLAG NON_UNIQUE, " +
"a.RDB$FIELD_POSITION ORDINAL_POSITION, a.RDB$FIELD_NAME COLUMN_NAME, 3 INDEX_TYPE " +
"FROM RDB$INDEX_SEGMENTS a, RDB$INDICES b WHERE a.RDB$INDEX_NAME=b.RDB$INDEX_NAME AND b.RDB$RELATION_NAME = ?";
Map indices = new ListOrderedMap();
PreparedStatement stmt = null;
try
{
stmt = getConnection().prepareStatement(query);
stmt.setString(1, getPlatform().isDelimitedIdentifierModeOn() ? tableName : tableName.toUpperCase());
ResultSet indexData = stmt.executeQuery();
while (indexData.next())
{
Map values = readColumns(indexData, getColumnsForIndex());
// we have to reverse the meaning of the unique flag; also, null means false
values.put("NON_UNIQUE", (values.get("NON_UNIQUE") == null) || Boolean.FALSE.equals(values.get("NON_UNIQUE")) ? Boolean.TRUE : Boolean.FALSE);
// and trim the names
values.put("INDEX_NAME", ((String)values.get("INDEX_NAME")).trim());
values.put("TABLE_NAME", ((String)values.get("TABLE_NAME")).trim());
values.put("COLUMN_NAME", ((String)values.get("COLUMN_NAME")).trim());
readIndex(metaData, values, indices);
}
}
finally
{
closeStatement(stmt);
}
return indices.values();
}