JDBC
MapD Core Database supports JDBC connections.
Resources
Resource | Description |
---|---|
JAR file | $MAPD_PATH/bin/mapdjdbc-1.0-SNAPSHOT-jar-with-dependencies.jar |
Code samples | $MAPD_PATH/samples |
JDBC driver | com.mapd.jdbc.MapDDriver |
URL | jdbc:mapd:<host>:<port>:<dbName> |
You can connect to a JDBC session using the HTTP protocol by appending http
to a URL. For example, jdbc:mapd:localhost:9092:mapd:http
.
Supported JDBC Methods
Method | Description |
---|---|
clearWarnings |
Clear all warnings reported for this
connection object. After calling
clearWarnings , calling getWarnings
returns null until a new warning is reported
for this connection object. |
close |
Disconnect the JDBC client session and frees associated resources. |
createStatement |
Get a new, empty Statement object. |
getCatalog |
Get the Connection object current catalog name. |
getMetaData |
Get a DatabaseMetaData object, which
contains metadata about the database for which
this Connection object represents a
connection. The metadata includes information
about the database tables, supported SQL
grammar, stored procedures, and the
capabilities of this connection. |
getWarnings |
Get the first warning reported by calls on this Connection object. |
isClosed |
Get the closed status of this Connection object:
|
isValid |
Get the connection status:
|
prepareStatement |
Create a PreparedStatement object. MapD Core makes no distinction between prepared and directly executed statements and queries. |
Driver | |
acceptsURL |
Get the driver determination of whether or not it can open a connection to the URL. |
connect |
Make a database connection to the specified URL. |
getMajorVersion |
Get the driver major version number. |
getMinorVersion |
Get the driver minor version number. |
getParentLogger |
Get the parent Logger of all Loggers used by this driver. |
getPropertyInfo |
Get driver property information. |
jdbcCompliant |
Test if this driver is a JDBC-compliant driver. |
Statement | |
executeQuery |
Execute a SELECT query. |
executeUpdate |
Execute an INSERT or DROP statement. |
getMaxFieldSize |
Get the maximum number of bytes that can be returned for character and binary column values in a ResultSet object produced by this Statement object. |
getMaxRows |
Get the maximum number of rows that a ResultSet object produced by this Statement object can contain. |
getMetaData |
Get a new DatabaseMetaData object. |
setMaxFieldSize |
Set the limit for the maximum number of bytes that can be returned for character and binary column values in a ResultSet object produced by this Statement object. |
setMaxRows |
Set the limit for the maximum number of rows that any ResultSet object generated by this Statement object can contain to the given number. Default is 100,000 rows. |
PreparedStatement | |
addBatch |
Add an INSERT statement to a batch. |
execute |
Execute a prepared query. MapD Core makes no distinction between prepared and direct query execution. |
executeBatch |
Execute a batch of queries. |
executeUpdate |
Create a prepared statement object for batch updates. |
set[obj] |
Set a dynamic parameter for batch statements. Dynamic parameters are supported with batch inserts only. |
setMaxRows |
Set the limit for the maximum number of rows that any ResultSet object generated by this Statement object can contain to the given number. Default is 100,000 rows. |
ResultSet | |
close | Releases this ResultSet's database and JDBC resources immediately. |
getBigDecimal | Get a BigDecimal object. |
getBoolean | Get a boolean object. |
getDate | Get a java.sql.Date object. |
getDouble | Get a double object. |
getFloat | Get a float object. |
getInt | Get an integer object. |
getLong | Get a long integer object |
getObject | Get a generic Object class representing the column value. |
getShort | Get a short integer. |
getString | Get a String object. |
getTime | Get a java.sql.Time object. |
getTimestamp | Get a java.sql.Timestamp object. | ResultSetMetaData |
getColumnCount | Get the designated column's table's catalog name. |
getColumnDisplaySize | Get the designated column's normal maximum width in characters. |
getColumnLabel | Get the designated column's suggested title for use in printouts and displays. |
getColumnName | Get the designated column's name. |
getColumnType | Get the designated column's SQL type. |
getColumnTypeName | Get the designated column's database-specific type name. |
getPrecision | Get the designated column's specified column size. |
getScale | Get the designated column's number of digits to right of the decimal point. |
getSchemaName | Get the designated column's table's schema. |
getTableName | Get the designated column's table name. |
isAutoIncrement | Get whether the designated column is automatically numbered. |
isCaseSensitive | Get whether a column's case matters. |
isCurrency | Get whether the designated column is a cash value. |
isDefinitelyWritable | Get whether a write on the designated column will definitely succeed. |
isNullable | Get the nullability of values in the designated column. |
isReadOnly | Get whether the designated column is definitely not writable. |
isSearchable | Get whether the designated column can be used in a where clause. |
isSigned | Get whether values in the designated column are signed numbers. |
isWritable | Get whether it is possible to write to the designated column. |
DatabaseMetaData | |
allTablesAreSelectable | Get whether the current user can use all the tables returned by the method getTables in a SELECT statement. |
autoCommitFailureClosesAllResultSets | Get whether a SQLException while autoCommit is true inidcates that all open ResultSets are closed, even ones that are holdable. |
dataDefinitionCausesTransactionCommit | Get whether a data definition statement within a transaction forces the transaction to commit. |
dataDefinitionIgnoredInTransactions | Get whether this database ignores a data definition statement within a transaction. |
doesMaxRowSizeIncludeBlobs | Get whether the return value for the method getMaxRowSize includes the SQL data types LONGVARCHAR and LONGVARBINARY. |
generatedKeyAlwaysReturned | Get whether a generated key will always be returned if the column name(s) or index(es) specified for the auto generated key column(s) are valid and the statement succeeds. |
getBestRowIdentifier | Get a description of a table's optimal set of columns that uniquely identifies a row. |
getCatalogs | Get the catalog names available in this database. |
getCatalogSeparator | Get the String that this database uses as the separator between a catalog and table name. |
getCatalogTerm | Get the database vendor's preferred term for "catalog". |
getColumns | Get a description of table columns available in the specified catalog. |
getConnection | Get the connection that produced this metadata object. |
getDatabaseMajorVersion | Get the major version number of the underlying database. |
getDatabaseMinorVersion | Get the minor version number of the underlying database. |
getDatabaseProductName | Get the name of this database product. |
getDatabaseProductVersion | Get the version number of this database product. |
getDefaultTransactionIsolation | Get this database's default transaction isolation level. |
getDriverMajorVersion | Get this JDBC driver's major version number. |
getDriverMinorVersion | Get this JDBC driver's minor version number. |
getDriverName | Get the name of this JDBC driver. |
getDriverVersion | Get the version number of this JDBC driver as a String. |
getExtraNameCharacters | Get all the "extra" characters that can be used in unquoted identifier names (those beyond a-z, A-Z, 0-9 and _). |
getIdentifierQuote | Get the string used to quote SQL identifiers. |
getJDBCMajorVersion | Get the major JDBC version number for this driver. |
getJDBCMinorVersion | Get the minor JDBC version number for this driver. |
getMaxBinaryLiteralLength | Get the maximum number of hex characters this database allows in an inline binary literal. |
getMaxCatalogNameLength | Get the maximum number of characters that this database allows in a catalog name. |
getMaxCharLiteralLength | Get the maximum number of characters this database allows for a character literal. |
getMaxColumnNameLength | Get the maximum number of characters this database allows for a column name. |
getMaxColumnsInGroupBy | Get the maximum number of columns this database allows in a GROUP BY clause. |
getMaxColumnsInIndex | Get the maximum number of columns this database allows in an index. |
getMaxColumnsInOrderBy | Get the maximum number of columns this database allows in an ORDER BY clause. |
getMaxColumnsInSelect | Get the maximum number of columns this database allows in a SELECT list. |
getMaxColumnsInTable | Get the maximum number of columns this database allows in a table. |
getMaxConnections | Get the maximum number of concurrent connections to this database that are possible. |
getMaxCursorNameLength | Get the maximum number of characters that this database allows in a cursor name. |
getMaxIndexLength | Get the maximum number of bytes this database allows for an index, including all of the parts of the index. |
getMaxProcedureNameLength | Get the maximum number of characters that this database allows in a procedure name. |
getMaxRowSize | Get the maximum number of bytes this database allows in a single row. |
getMaxSchemaNameLength | Get the maximum number of characters that this database allows in a schema name. |
getMaxStatementLength | Get the maximum number of characters this database allows in an SQL statement. |
getMaxStatements | Get the maximum number of active statements to this database that can be open at the same time. |
getMaxTableNameLength | Get the maximum number of characters this database allows in a table name. |
getMaxTablesInSelect | Get the maximum number of tables this database allows in a SELECT statement. |
getMaxUserNameLength | Get the maximum number of characters this database allows in a user name. |
getNumericFunctions | Get a comma-separated list of math functions available with this database. |
getSchemas | Get the schema names available in this database. |
getSchemaTerm | Get the database vendor's preferred term for "schema". |
getSearch Escape | Get the string that can be used to escape wildcard characters. |
getSQLKeywords | Get a comma-separated list of all of this database's SQL keywords that are NOT also SQL:2003 keywords. |
getSQLStateType | Indicates whether the SQLSTATE returned by SQLException.getSQLState is X/Open (now known as Open Group) SQL CLI or SQL:2003. |
getTablePrivileges | Get a description of the access rights for each table available in a catalog. |
getTables | Get a description of the tables available in the given catalog. |
getTableTypes | Get the table types available in this database. |
getTimeDateFunctions | Get a comma-separated list of the time and date functions available with this database. |
getTypeInfo | Get a description of all the data types supported by this database. |
getURL | Get the URL for this DBMS. |
getUserName | Get the user name as known to this database. |
isCatalogAtStart | Get whether a catalog appears at the start of a fully qualified table name. |
nullPlusNonNullIsNull | Get whether this database supports concatenations between NULL and non-NULL values being NULL. |
nullsAreSortedAtEnd | Get whether NULL values are sorted at the end regardless of sort order. |
nullsAreSortedAtStart | Get whether NULL values are sorted at the start regardless of sort order. |
nullsAreSortedHigh | Get whether NULL values are sorted high. |
nullsAreSortedLow | Get whether NULL values are sorted low. |
othersDeletesAreVisible | Get whether deletes made by others are visible. |
othersInsertsAreVisible | Get whether inserts made by others are visible. |
othersUpdatesAreVisible | Get whether updates made by others are visible. |
ownDeletesAreVisible | Get whether a result set's own deletes are visible. |
ownInsertsAreVisible | Get whether a result set's own inserts are visible. |
ownUpdatesAreVisible | Get whether for the given type of ResultSet object, the result set's own updates are visible. |
storesLowerCaseIdentifiers | Get whether this database treats mixed case unquoted SQL identifiers as case insensitive and stores them in lower case. |
storesLowerCaseQuotedIdentifiers | Get whether this database treats mixed case quoted SQL identifiers as case insensitive and stores them in lower case. |
storesMixedCaseIdentifiers | Get whether this database treats mixed case unquoted SQL identifiers as case insensitive and stores them in mixed case. |
storesMixedCaseQuotedIdentifiers | Get whether this database treats mixed case quoted SQL identifiers as case insensitive and stores them in mixed case. |
storesUpperCaseIdentifiers | Get whether this database treats mixed case unquoted SQL identifiers as case insensitive and stores them in upper case. |
storesUpperCaseQuotedIdentifiers | Get whether this database treats mixed case quoted SQL identifiers as case insensitive and stores them in upper case. |
supportsAlterTableWithAddColumn | Get whether this database supports ALTER TABLE with add column. |
supportsAlterTableWithDropColumn | Get whether this database supports ALTER TABLE with drop column. |
supportsANSI92EntryLevelSQL | Get whether this database supports the ANSI92 entry level SQL grammar. |
supportsANSI92FullSQL | Get whether this database supports the ANSI92 full SQL grammar supported. |
supportsANSI92IntermediateSQL | Get whether this database supports the ANSI92 intermediate SQL grammar supported. |
supportsBatchUpdates | Get whether this database supports batch updates. |
supportsCatalogsInDataManipulation | Get whether a catalog name can be used in a data manipulation statement. |
supportsCatalogsInIndexDefinitions | Get whether a catalog name can be used in an index definition statement. |
supportsCatalogsInPrivilegeDefinitions | Get whether a catalog name can be used in a privilege definition statement. |
supportsCatalogsInProcedureCalls | Get whether a catalog name can be used in a procedure call statement. |
supportsCatalogsInTableDefinitions | Get whether a catalog name can be used in a table definition statement. |
supportsColumnAliasing | Get whether this database supports column aliasing. |
supportsConvert | Get whether this database supports the JDBC scalar function CONVERT for the conversion of one JDBC type to another. |
supportsConvert | Get whether this database supports the JDBC scalar function CONVERT for conversions between the JDBC types fromType and toType. |
supportsCoreSQLGrammar | Get whether this database supports the ODBC Core SQL grammar. |
supportsCorrelatedSubqueries | Get whether this database supports correlated subqueries. |
supportsDataDefinitionAndDataManipulationTransactions | Get whether this database supports both data definition and data manipulation statements within a transaction. |
supportsDataManipulationTransactionsOnly | Get whether this database supports only data manipulation statements within a transaction. |
supportsDifferentTableCorrelationNames | Get whether, when table correlation names are supported, they are restricted to being different from the names of the tables. |
supportsExpressionsInOrderBy | Get whether this database supports expressions in ORDER BY lists. |
supportsExtendedSQLGrammar | Get whether this database supports the ODBC Extended SQL grammar. |
supportsFullOuterJoins | Get whether this database supports full nested outer joins. |
supportsGroupBy | Get whether this database supports some form of GROUP BY clause. |
supportsGroupByBeyondSelect | Get whether this database supports using columns not included in the SELECT statement in a GROUP BY clause provided that all of the columns in the SELECT statement are included in the GROUP BY c |
supportsGroupByUnrelated | Get whether this database supports using a column that is not in the SELECT statement in a GROUP BY clause. |
supportsIntegrityEnhancementFacility | Get whether this database supports the SQL Integrity Enhancement Facility. |
supportsLikeEscapeClause | Get whether this database supports specifying a LIKE escape clause. |
supportsLimitedOuterJoins | Get whether this database provides limited support for outer joins. |
supportsMinimumSQLGrammar | Get whether this database supports the ODBC Minimum SQL grammar. |
supportsMixedCaseIdentifiers | Get whether this database treats mixed case unquoted SQL identifiers as case sensitive and as a result stores them in mixed case. |
supportsMixedCaseQuotedIdentifiers | Get whether this database treats mixed case quoted SQL identifiers as case sensitive and as a result stores them in mixed case. |
supportsMultipleOpenResults | Get whether it is possible to have multiple ResultSet objects returned from a CallableStatement object simultaneously. |
supportsMultipleResultSets | Get whether this database supports getting multiple ResultSet objects from a single call to the method execute. |
supportsMultipleTransactions | Get whether this database allows having multiple transactions open at once (on different connections). |
supportsNamedParameters | Get whether this database supports named parameters to callable statements. |
supportsNonNullableColumns | Get whether columns in this database may be defined as non-nullable. |
supportsOpenCursorsAcrossCommit | Get whether this database supports keeping cursors open across commits. |
supportsOpenCursorsAcrossRollback | Get whether this database supports keeping cursors open across rollbacks. |
supportsOpenStatementsAcrossCommit | Get whether this database supports keeping statements open across commits. |
supportsOpenStatementsAcrossRollback | Get whether this database supports keeping statements open across rollbacks. |
supportsOrderByUnrelated | Get whether this database supports using a column that is not in the SELECT statement in an ORDER BY clause. |
supportsOuterJoins | Get whether this database supports some form of outer join. |
supportsPositionedDelete | Get whether this database supports positioned DELETE statements. |
supportsPositionedUpdate | Get whether this database supports positioned UPDATE statements. |
supportsResultSetConcurrency | Get whether this database supports the given concurrency type in combination with the given result set type. |
supportsResultSetHoldability | Get whether this database supports the given result set holdability. |
supportsResultSetType | Get whether this database supports the given result set type. |
supportsSavepoints | Get whether this database supports savepoints. |
supportsSchemasInDataManipulation | Get whether a schema name can be used in a data manipulation statement. |
supportsSchemasInIndexDefinitions | Get whether a schema name can be used in an index definition statement. |
supportsSchemasInPrivilegeDefinitions | Get whether a schema name can be used in a privilege definition statement. |
supportsSchemasInTableDefinitions | Get whether a schema name can be used in a table definition statement. |
supportsSelectForUpdate | Get whether this database supports SELECT FOR UPDATE statements. |
supportsStatementPooling | Get whether this database supports statement pooling. |
supportsStoredFunctionsUsingCallSyntax | Get whether this database supports invoking user-defined or vendor functions using the stored procedure escape syntax |
supportsStoredProcedures | Get whether this database supports stored procedure calls that use the stored procedure escape syntax. |
supportsSubqueriesInComparisons | Get whether this database supports subqueries in comparison expressions. |
supportsSubqueriesInExists | Get whether this database supports subqueries in EXISTS expressions. |
supportsSubqueriesInIns | Get whether this database supports subqueries in IN expressions. |
supportsSubqueriesInQuantifieds | Get whether this database supports subqueries in quantified expressions. |
supportsTableCorrelationNames | Get whether this database supports table correlation names. |
supportsTransactionIsolationLevel | Get whether this database supports the given transaction isolation level. |
supportsTransactions | Get whether this database supports transactions. |
supportsUnion | Get whether this database supports SQL UNION. |
supportsUnionAll | Get whether this database supports SQL UNION ALL. |
usesLocalFilePerTable | Get whether this database uses a file for each table. |
usesLocalFiles | Get whether this database stores tables in a local file. |
Unsupported Features
- Transaction statements
- Cursors
- Table updates, alterations or deletions
- Multiple result sets
- Domains
- Rules
- Database procedures
- Indexes
- Query cancellation
- Keys
- Constraints
- Schemas (table ownership) - any client can see tables and views created by any user without restriction
Example
This example uses the JDBC interface to create a flight information database, then reads carrier information from the database.
Sequence
The key steps are:
- Set connection parameters and credentials:
static final String JDBC_DRIVER = "com.mapd.jdbc.MapDDriver";
static final String DB_URL = "jdbc:mapd:localhost:9091:mapd";
static final String USER = "myUserName";
static final String PASS = "myPassWord";
- Register the JDBC driver:
Class.forName(JDBC_DRIVER);
- Open a MapD server connection:
conn = DriverManager.getConnection(DB_URL, USER, PASS);
- Create a table, add data, and query the database:
stmt = conn.createStatement();
String sql = "CREATE table flights(arr_timestamp timestamp, dep_timestamp timestamp, uniquecarrier varchar(50))";
stmt.executeUpdate(sql);
sql = "insert into flights values('2017-04-23 06:30:0’, '2017-04-23 07:45:00’, 'Southwest’)";
stmt.executeUpdate(sql);
sql = "insert into flights values('2017-04-23 06:50:0’, '2017-04-23 09:45:00’, 'American’)";
stmt.executeUpdate(sql);
sql = "insert into flights values('2017-04-23 09:30:0’,’ 2017-04-23 12:45:00’, 'United’)";
stmt.executeUpdate(sql);
sql = "SELECT uniquecarrier from flights";
ResultSet rs = stmt.executeQuery(sql);
- Extract data from the result set:
while (rs.next()) {
String uniquecarrier = rs.getString("uniquecarrier");
System.out.println("uniquecarrier: " + uniquecarrier);
}
Compile and Run
javac Flights.java
java -cp $MAPD_PATH/bin/mapdjdbc-1.0-SNAPSHOT-jar-with-dependencies.jar:./ Flights
Source Code
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Flights {
static final String JDBC_DRIVER = "com.mapd.jdbc.MapDDriver";
static final String DB_URL = "jdbc:mapd:localhost:9091:mapd";
static final String USER = "myUserName";
static final String PASS = "myPassWord";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement();
String sql = "CREATE table flights(arr_timestamp timestamp, dep_timestamp timestamp, uniquecarrier varchar(50))";
stmt.executeUpdate(sql);
sql = "insert into flights values('2017-04-23 06:30:0’, '2017-04-23 07:45:00’, 'Southwest’)";
stmt.executeUpdate(sql);
sql = "insert into flights values('2017-04-23 06:50:0’, '2017-04-23 09:45:00’, 'American’)";
stmt.executeUpdate(sql);
sql = "insert into flights values('2017-04-23 09:30:0’,’ 2017-04-23 12:45:00’, 'United’)";
stmt.executeUpdate(sql);
sql = "SELECT uniquecarrier from flights";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
String uniquecarrier = rs.getString("uniquecarrier");
System.out.println("uniquecarrier: " + uniquecarrier);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
//Handle errors for JDBC
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
}
}
}