public class AccessDialect extends JdbcDialectImpl
Dialect for the Microsoft Access
 database (also called the JET Engine).Dialect.DatabaseProduct, Dialect.Datatype| Modifier and Type | Field and Description | 
|---|---|
static JdbcDialectFactory | 
FACTORY  | 
databaseProduct, permitsSelectNotInGroupBy, productVersion| Constructor and Description | 
|---|
AccessDialect(Connection connection)
Creates an AccessDialect. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
boolean | 
allowsCountDistinct()
Returns whether this Dialect supports distinct aggregations. 
 | 
String | 
caseWhenElse(String cond,
            String thenExpr,
            String elseExpr)
Generates a conditional statement in this dialect's syntax. 
 | 
String | 
generateInline(List<String> columnNames,
              List<String> columnTypes,
              List<String[]> valueList)
Generates a SQL statement to represent an inline dataset. 
 | 
protected String | 
generateOrderByNulls(String expr,
                    boolean ascending,
                    boolean collateNullsLast)
Generates SQL to force null values to collate last. 
 | 
protected void | 
quoteDateLiteral(StringBuilder buf,
                String value,
                Date date)
Helper method for  
JdbcDialectImpl.quoteDateLiteral(StringBuilder, String). | 
boolean | 
requiresUnionOrderByExprToBeInSelectClause()
Returns true if this dialect allows an expression in the ORDER BY
 clause of a UNION (or other set operation) query only if it occurs in
 the SELECT clause. 
 | 
String | 
toUpper(String expr)
Converts an expression to upper case. 
 | 
allowsAs, allowsCompoundCountDistinct, allowsCountDistinctWithOtherAggs, allowsDdl, allowsDialectSharing, allowsFromQuery, allowsJoinOn, allowsMultipleCountDistinct, allowsMultipleDistinctSqlMeasures, allowsOrderByAlias, allowsRegularExpressionInWhereClause, allowsSelectNotInGroupBy, appendHintsAfterFromClause, computeStatisticsProviders, deduceIdentifierQuoteString, deduceMaxColumnNameLength, deduceProductName, deduceProductVersion, deduceReadOnly, deduceSupportedResultSetStyles, deduceSupportsSelectNotInGroupBy, generateCountExpression, generateInlineForAnsi, generateInlineGeneric, generateOrderByNullsAnsi, generateOrderItem, generateRegularExpression, getDatabaseProduct, getMaxColumnNameLength, getProduct, getQuoteIdentifierString, getStatisticsProviders, getType, isDatabase, logTypeInfo, needsExponent, quote, quoteBooleanLiteral, quoteDateLiteral, quoteIdentifier, quoteIdentifier, quoteIdentifier, quoteIdentifier, quoteNumericLiteral, quoteStringLiteral, quoteTimeLiteral, quoteTimestampLiteral, requiresAliasForFromQuery, requiresGroupByAlias, requiresHavingAlias, requiresOrderByAlias, requiresUnionOrderByOrdinal, supportsGroupByExpressions, supportsGroupingSets, supportsMultiValueInExpr, supportsResultSetConcurrency, supportsUnlimitedValueList, toStringpublic static final JdbcDialectFactory FACTORY
public AccessDialect(Connection connection) throws SQLException
connection - ConnectionSQLExceptionpublic String toUpper(String expr)
DialectFor example, for MySQL, toUpper("foo.bar") returns
 "UPPER(foo.bar)".
toUpper in interface DialecttoUpper in class JdbcDialectImplexpr - SQL expressionexpr
 into upper case.public String caseWhenElse(String cond, String thenExpr, String elseExpr)
DialectFor example, caseWhenElse("b", "1", "0") returns
 "case when b then 1 else 0 end" on Oracle,
 "Iif(b, 1, 0)" on Access.
caseWhenElse in interface DialectcaseWhenElse in class JdbcDialectImplcond - Predicate expressionthenExpr - Expression if condition is trueelseExpr - Expression if condition is falseprotected void quoteDateLiteral(StringBuilder buf, String value, Date date)
JdbcDialectImplJdbcDialectImpl.quoteDateLiteral(StringBuilder, String).quoteDateLiteral in class JdbcDialectImplbuf - Buffer to append tovalue - Value as stringdate - Value as dateprotected String generateOrderByNulls(String expr, boolean ascending, boolean collateNullsLast)
JdbcDialectImplThis default implementation makes use of the ANSI SQL 1999 CASE-WHEN-THEN-ELSE in conjunction with IS NULL syntax. The resulting SQL will look something like this:
CASE WHEN "expr" IS NULL THEN 0 ELSE 1 END
 
You can override this method for a particular database to use something more efficient, like ISNULL().
ANSI SQL provides the syntax "ASC/DESC NULLS LAST" and
 "ASC/DESC NULLS FIRST". If your database supports the ANSI
 syntax, implement this method by calling
 JdbcDialectImpl.generateOrderByNullsAnsi(java.lang.String, boolean, boolean).
 
This method is only called from
 JdbcDialectImpl.generateOrderItem(String, boolean, boolean, boolean).
 Some dialects override that method and therefore never call
 this method.
generateOrderByNulls in class JdbcDialectImplexpr - Expression.ascending - Whether ascending.collateNullsLast - Whether nulls should appear first or last.public boolean requiresUnionOrderByExprToBeInSelectClause()
DialectFor example,
 SELECT x, y + z FROM t
 is allowed but
 
 UNION ALL
 SELECT x, y + z FROM t
 ORDER BY y + zSELECT x, y, z FROM t
 
 UNION ALL
 SELECT x, y, z FROM t
 ORDER BY y + zSELECT x, y, z FROM t ORDER BY y + z
 is not.
 
Access is an example of a dialect with this restriction.
requiresUnionOrderByExprToBeInSelectClause in interface DialectrequiresUnionOrderByExprToBeInSelectClause in class JdbcDialectImplpublic boolean allowsCountDistinct()
DialectFor example, Access does not allow
 select count(distinct x) from t
 allowsCountDistinct in interface DialectallowsCountDistinct in class JdbcDialectImplpublic String generateInline(List<String> columnNames, List<String> columnTypes, List<String[]> valueList)
DialectFor example, for Oracle, generates
SELECT 1 AS FOO, 'a' AS BAR FROM dual UNION ALL SELECT 2 AS FOO, 'b' AS BAR FROM dual
For ANSI SQL, generates:
VALUES (1, 'a'), (2, 'b')
generateInline in interface DialectgenerateInline in class JdbcDialectImplcolumnNames - List of column namescolumnTypes - List of column types ("String" or "Numeric")valueList - List of rows values