Suporte de API do driver JDBC

O driver JDBC tipo 4 do Snowflake tem suporte para a funcionalidade JDBC de base na versão 1.0 da API do JDBC. Para uma referência completa da API, consulte a documentação de tecnologias Java SE. Você está convidado a experimentar métodos das versões posteriores do API, mas o Snowflake não garante que estes métodos tenham suporte.

O driver Snowflake JDBC requer Java LTS (Long-Term Support) versão 1.8 ou superior. O driver requer o pacote java.sql, que está incluído na Standard Edition (SE) e na Enterprise Edition (EE) do Java. A partir de agosto de 2019, a documentação do pacote java.sql está disponível em https://docs.oracle.com/javase/8/docs/api/java/sql/package-summary.html

O driver pode ser usado com a maioria das ferramentas e aplicativos do cliente com suporte para JDBC para conexão a um servidor de banco de dados.

Este tópico não documenta toda a API do JDBC. Ao invés disso, o tópico:

  • Lista as interfaces com suporte a partir da API do JDBC e os métodos aceitos em cada interface.

  • Documenta áreas onde o Snowflake estende o padrão de API do JDBC.

  • Documenta áreas onde o padrão de API do JDBC é ambíguo e a implementação do Snowflake pode se comportar de forma diferente de outros sistemas.

Em geral, se um método for chamado e falhar, ele acionará uma exceção (por exemplo, SQLException).

As interfaces JDBC aceitas são listadas alfabeticamente e emparelhadas com suas classes de extensão Snowflake correspondentes (onde aplicável).

Neste tópico:

Objeto: CallableStatement

Um CallableStatement é usado para executar um procedimento armazenado.

Métodos

Nome do método

Notas

Métodos com suporte

getBigDecimal(int, int)

getBoolean(int)

getByte(int)

getBytes(int)

getDate(int)

getDouble(int)

getFloat(int)

getInt(int)

getLong(int)

getObject(int)

getShort(int)

getString(int)

getTime(int)

getTimestamp(int)

registerOutParameter(int, int, int)

registerOutParameter(int, int)

wasNull()

Métodos sem suporte

Nenhum.

Comportamento específico do Snowflake

Nenhum.

Interface: SnowflakeCallableStatement

A interface SnowflakeCallableStatement contém métodos específicos do Snowflake. Quando você usa o driver JDBC do Snowflake para criar um objeto do tipo CallableStatement, por exemplo chamando o método Connection.prepareCall(), você recebe um objeto de um tipo diferente (oculto) específico do Snowflake, que implementa tanto a interface JDBC CallableStatement quanto a interface SnowflakeCallableStatement. Para acessar os métodos SnowflakeCallableStatement naquele objeto, você desencapsula o objeto.

Métodos adicionais

Nome do método

Descrição

getQueryID()

Retorna a ID da consulta do Snowflake executada mais recentemente desta CallableStatement

getQueryID()
Objetivo

Este método retorna a ID da consulta do Snowflake executada mais recentemente desta CallableStatement Se nenhuma consulta tiver sido executada ainda com a instrução chamável, o método retorna nulo.

Argumentos

Nenhum.

Retornos

Este método retorna a ID como uma cadeia de caracteres que contém uma UUID. As informações sobre UUIDs estão incluídas na descrição da função SQL UUID_STRING.

Gera

O método pode gerar SQLException.

Objeto: Connection

Um objeto Connection representa uma conexão a um servidor de banco de dados. O objeto de conexão permite aos usuários não apenas conectar-se a um determinado servidor de banco de dados, mas também criar objetos Statement, que podem ser usados para executar instruções SQL.

Métodos

Nome do método

Notas

Métodos com suporte

abort()

clearWarnings()

close()

Comportamento específico do Snowflake (consulte abaixo).

commit()

createStatement()

createStatement(int, int)

createStatement(int, int, int)

getAutoCommit()

getCatalog()

getClientInfo()

getHoldability()

getMetaData()

Comportamento específico do Snowflake (consulte abaixo).

getSchema()

getTransactionIsolation()

getTypeMap()

getWarnings()

isClosed()

isReadOnly()

isValid()

nativeSQL(String)

prepareCall(String)

prepareCall(String, boolean)

prepareCall(String, int, int)

prepareCall(String, int, int, int)

prepareStatement(String)

prepareStatement(String, int)

prepareStatement(String, int[])

prepareStatement(String, String[])

prepareStatement(String, int, int)

prepareStatement(String, int, int, int)

Comportamento específico do Snowflake (consulte abaixo)

prepareStatement(String, boolean)

setAutoCommit(boolean)

setCatalog(String)

setClientInfo(String, String)

Chamar este método causa uma SQLClientInfoException.

setClientInfo(Properties)

Chamar este método causa uma SQLClientInfoException.

setReadOnly(boolean)

setSchema(String)

Métodos sem suporte

rollback()

setTransactionIsolation(int)

Comportamento específico do Snowflake

  • close()

    Fecha o objeto. Após um objeto ter sido fechado, chamar quase qualquer método do objeto fechado acionará uma SQLException. Chamar close para um objeto já fechado é algo inofensivo e não aciona uma exceção.

  • getMetaData()

    Permite obter metadados sobre o driver JDBC e o Snowflake. Por exemplo, você pode descobrir se as transações têm suporte.

    Para obter mais informações sobre os métodos que você pode chamar para o valor retornado, consulte Objeto: DatabaseMetaData.

  • prepareStatement(String sql)

    Este método retorna um objeto preparedStatement que pode ser usado para executar a instrução SQL. O método execute() do objeto preparedStatement pode ser chamado para executar a instrução. A instrução pode ser executada como está ou após a vinculação de valores à instrução.

    Nota

    Em alguns sistemas, após uma instrução ter sido preparada, ela pode ser executada repetidamente sem ser recompilada. Preparar-se uma vez e executar repetidamente pode economizar uma pequena quantidade de tempo e recursos.

    No Snowflake, prepareStatement() não compila realmente o código. Em vez disso, PreparedStatement.execute(), PreparedStatement.executeQuery() e PreparedStatement.executeUpdate() compilam e executam a instrução. Portanto, preparar a instrução antes da execução não economiza recursos em comparação com apena usar Statement.execute().

  • prepareCall(String sql)

  • prepareCall(String sql, boolean)

  • prepareCall(String sql, int, int)

  • prepareCall(String sql, int, int, int)

    Como na maioria das implementações JDBC, os métodos prepareCall podem ser usados para vincular parâmetros a um procedimento armazenado. Por exemplo, é permitido o seguinte:

    CallableStatement stmt = testConnection.prepareCall("call read_result_set(?,?) ");
    
    Copy

    Entretanto, no driver JDBC do Snowflake, os métodos prepareCall não aceitam a sintaxe ? = para permitir a vinculação do valor de retorno de um procedimento armazenado. Por exemplo, o seguinte não é permitido:

    CallableStatement stmt = testConnection.prepareCall("? = call read_result_set() ");  -- INVALID
    
    Copy

Interface: SnowflakeConnection

A interface SnowflakeConnection contém métodos específicos do Snowflake. Quando você usa o driver JDBC do Snowflake para criar um objeto do tipo Connection, por exemplo chamando o método DriverManager.getConnection(), você recebe um objeto de um tipo diferente (oculto) específico do Snowflake, que implementa tanto a interface de conexão do JDBC quanto a interface SnowflakeConnection. Para acessar os métodos SnowflakeConnection naquele objeto, você desencapsula o objeto.

Métodos adicionais

Estes métodos são adicionais aos métodos aceitos pela interface JDBC Connection.

Nome do método

Descrição

createResultSet(String)

Dada a ID de consulta de uma instrução SQL iniciada assincronamente, recupera os resultados da consulta e os retorna em um objeto ResultSet.

downloadStream(String, String, boolean)

Baixa um arquivo do estágio interno dado e retorna um InputStream.

getSessionID()

Obtém a ID da sessão atual.

prepareStatement(String, Boolean)

Método prepareStatement() sobrecarregado (consulte detalhes abaixo).

uploadStream(String, String, InputStream, String, boolean)

Comprime os dados de um fluxo e os carrega no caminho e nome de arquivo especificados em um estágio interno.

public ResultSet createResultSet(String queryID)
Objetivo

Dada a queryID de uma instrução SQL iniciada assincronamente, recupera os resultados da consulta e os retorna em um objeto ResultSet.

Este método normalmente pode ser chamado até 24 horas após o término da instrução SQL.

Argumentos

queryID: A ID da consulta para a qual você quer resultados.

Retornos

O ResultSet. Se a consulta ainda não tiver terminado, o servidor retorna um ResultSet “vazio”. O usuário pode chamar resultSet.unwrap(SnowflakeResultSet.class).getStatus() para saber quando os dados estão disponíveis.

Gera

Este método pode gerar SQLException.

Notas

Este método é uma extensão do Snowflake para o padrão JDBC. Para usar este método, você precisa desencapsular o objeto Connection.

Exemplos
ResultSet resultSet;
resultSet = connection.unwrap(SnowflakeConnection.class).createResultSet(queryID);
Copy

Consulte Exemplos de consultas assíncronas para um exemplo mais extenso que inclui uma chamada a este método.

public InputStream downloadStream(String stageName, String sourceFileName, boolean decompress)
Objetivo

Este método baixa um arquivo do estágio interno e retorna um fluxo de entrada.

Argumentos

stageName: Nome do estágio.

sourceFileName: Caminho do arquivo no estágio.

decompress: True se o arquivo estiver compactado.

Retornos

Este método retorna um InputStream.

Gera

Este método gera SQLException se ocorrer um erro SQL.

Exemplos

Para um exemplo parcial, consulte Download de arquivos de dados diretamente de um estágio interno para um fluxo.

public String getSessionID()
Objetivo

Este método retorna a ID da sessão atual.

Argumentos

Nenhum

Retornos

Retorna a ID da sessão como uma cadeia de caracteres.

Gera

Este método gera SQLException se ocorrer algum erro SQL; por exemplo, se a conexão estiver fechada.

Notas de uso

Como a ID da sessão não muda enquanto a conexão está aberta, a ID é armazenada em cache localmente (em vez de ser recuperada do servidor a cada vez) para melhorar o desempenho.

public prepareStatement(String sql, Boolean skipParsing)

Este método está obsoleto. O parâmetro skipParsing não afeta mais o comportamento do método; esse método se comporta da mesma forma que o método prepareStatement(String sql), independentemente da configuração do parâmetro skipParsing.

O novo código deve usar o método prepareStatement(String sql).

Quando conveniente, o código existente que usa a versão de dois argumentos deste método deve ser atualizado para usar o método de um argumento prepareStatement(String sql).

public void uploadStream(String stageName, String destPrefix, InputStream inputStream, String destFileName, boolean compressData)
Objetivo

Este método compacta os dados de um fluxo e os carrega em um local de estágio interno. Os dados serão carregados como um único arquivo. Nenhuma divisão é feita com este método.

Argumentos

stageName: Nome do estágio (por exemplo, ~ ou nome da tabela ou nome do estágio).

destPrefix: Caminho/prefixo sob o qual os dados devem ser carregados no estágio.

inputStream: Fluxo de entrada a partir do qual os dados serão carregados.

destFileName: Nome do arquivo de destino a ser utilizado.

compressData: Compactar dados ou não antes de carregar o fluxo.

Retornos

Nada.

Gera

Este método gera uma java.sql.SQLException se não conseguir compactar e colocar os dados de um fluxo no estágio.

Notas

O chamador é responsável por liberar o inputStream depois que o método é chamado.

Exemplos

Para um exemplo parcial, consulte Upload de arquivos de dados diretamente de um fluxo para um estágio interno.

Objeto: DatabaseMetaData

A classe DatabaseMetaData fornece informações sobre os recursos que o servidor de banco de dados (neste caso, o Snowflake) aceita.

Métodos

Nome do método

Notas

Métodos com suporte

allProceduresAreCallable()

allTablesAreSelectable()

dataDefinitionCausesTransactionCommit()

dataDefinitionIgnoredInTransactions()

doesMaxRowSizeIncludeBlobs()

getCatalogs()

getCatalogSeparator()

getCatalogTerm()

getColumnPrivileges(String, String, String, String)

Tem suporte para curingas para o argumento columnNamePattern. Tem suporte para nulo para os argumentos catalog, schemaPattern, tableNamePattern e columnNamePattern. Consulte Comportamento específico do Snowflake para obter mais informações sobre este método.

getColumns(String, String, String, String)

Tem suporte para curingas para os argumentos schemaPattern, tableNamePattern e columnNamePattern. Tem suporte para nulo para os argumentos catalog, schemaPattern, tableNamePattern e columnNamePattern.

getCrossReference(String, String, String, String, String, String)

Tem suporte para nulo para os argumentos parentCatalog, parentSchema, parentTable, foreignCatalog, foreignSchema e foreignTable.

getDatabaseProductName()

getDatabaseProductVersion()

getDefaultTransactionIsolation()

getDriverMajorVersion()

getDriverMinorVersion()

getDriverName()

getDriverVersion()

getExportedKeys(String, String, String)

Tem suporte para nulo para os argumentos catalog, schema, e table.

getExtraNameCharacters()

getFunctionColumns()

Tem suporte para curingas para os argumentos schemaPattern, functionNamePattern e columnNamePattern. Tem suporte para nulo para o argumento columnNamePattern.

getFunctions(String, String, String)

Tem suporte para curingas para os argumentos schemaPattern e functionNamePattern. Tem suporte para nulo para os argumentos schemaPattern e functionNamePattern.

getIdentifierQuoteString()

getImportedKeys(String, String, String)

Tem suporte para nulo para os argumentos catalog, schema, e table.

getIndexInfo(String, String, String, boolean, boolean)

getMaxBinaryLiteralLength()

getMaxCatalogNameLength()

getMaxCharLiteralLength()

getMaxColumnNameLength()

getMaxColumnsInGroupBy()

getMaxColumnsInIndex()

getMaxColumnsInOrderBy()

getMaxColumnsInSelect()

getMaxColumnsInTable()

getMaxConnections()

getMaxCursorNameLength()

getMaxIndexLength()

getMaxProcedureNameLength()

getMaxRowSize()

getMaxSchemaNameLength()

getMaxStatementLength()

getMaxStatements()

getMaxTableNameLength()

getMaxTablesInSelect()

getMaxUserNameLength()

getNumericFunctions()

getPrimaryKeys(String, String, String)

Tem suporte para nulo para os argumentos catalog, schema, e table.

getProcedureColumns(String, String, String, String)

Tem suporte para curingas para os argumentos schemaPattern, procedureNamePattern e columnNamePattern. Tem suporte para nulo para o argumento columnNamePattern.

getProcedures(String, String, String)

Tem suporte para curingas para os argumentos schemaPattern e procedureNamePattern. Tem suporte para nulo para o argumento columnNamePattern.

getProcedureTerm()

getSchemas()

getSchemas(String, String)

Tem suporte para curingas para o argumento schemaPattern. Tem suporte para nulo para os argumentos catalogName e schemaPattern.

getSchemaTerm()

getSearchStringEscape()

getSQLKeywords()

getSQLStateType()

getStreams(String, String, String)

Tem suporte para curingas para os argumentos orignalSchemaPattern e streamName. Tem suporte para nulo para os argumentos originalCatalog, originalSchemaPattern, e streamName. Consulte Comportamento específico do Snowflake para obter mais informações sobre este método.

getStringFunctions()

getSystemFunctions()

getTablePrivileges(String, String, String)

Tem suporte para curingas para os argumentos schemaPattern e tableNamePattern. Tem suporte para nulo para os argumentos catalog e schemaPattern.

getTables(String, String, String, String[])

Tem suporte para curingas para os argumentos schemaPattern e tableNamePattern. Tem suporte para nulo para os argumentos catalog, schemaPattern, tableNamePattern e types.

getTableTypes()

getTimeDateFunctions()

getTypeInfo()

getURL()

getUserName()

isCatalogAtStart()

isReadOnly()

nullPlusNonNullIsNull()

nullsAreSortedAtEnd()

nullsAreSortedAtStart()

nullsAreSortedHigh()

nullsAreSortedLow()

storesLowerCaseIdentifiers()

storesLowerCaseQuotedIdentifiers()

storesMixedCaseIdentifiers()

storesMixedCaseQuotedIdentifiers()

storesUpperCaseIdentifiers()

storesUpperCaseQuotedIdentifiers()

supportsAlterTableWithAddColumn()

supportsAlterTableWithDropColumn()

supportsANSI92EntryLevelSQL()

supportsANSI92FullSQL()

supportsANSI92IntermediateSQL()

supportsCatalogsInDataManipulation()

supportsCatalogsInIndexDefinitions()

supportsCatalogsInPrivilegeDefinitions()

supportsCatalogsInProcedureCalls()

supportsCatalogsInTableDefinitions()

supportsColumnAliasing()

supportsConvert()

supportsConvert(int, int)

supportsCoreSQLGrammar()

supportsCorrelatedSubqueries()

supportsDataDefinitionAndDataManipulationTransactions()

supportsDataManipulationTransactionsOnly()

supportsDifferentTableCorrelationNames()

supportsExpressionsInOrderBy()

supportsExtendedSQLGrammar()

supportsFullOuterJoins()

supportsGroupBy()

supportsGroupByBeyondSelect()

supportsGroupByUnrelated()

supportsIntegrityEnhancementFacility()

supportsLikeEscapeClause()

supportsLimitedOuterJoins()

supportsMinimumSQLGrammar()

supportsMixedCaseIdentifiers()

supportsMixedCaseQuotedIdentifiers()

supportsMultipleResultSets()

supportsMultipleTransactions()

supportsNonNullableColumns()

supportsOpenCursorsAcrossCommit()

supportsOpenCursorsAcrossRollback()

supportsOpenStatementsAcrossCommit()

supportsOpenStatementsAcrossRollback()

supportsOrderByUnrelated()

supportsOuterJoins()

supportsPositionedDelete()

supportsPositionedUpdate()

supportsSchemasInDataManipulation()

supportsSchemasInIndexDefinitions()

supportsSchemasInPrivilegeDefinitions()

supportsSchemasInProcedureCalls()

supportsSchemasInTableDefinitions()

supportsSelectForUpdate()

supportsStoredProcedures()

supportsSubqueriesInComparisons()

supportsSubqueriesInExists()

supportsSubqueriesInIns()

supportsSubqueriesInQuantifieds()

supportsTableCorrelationNames()

supportsTransactionIsolationLevel(int)

supportsTransactions()

supportsUnion()

supportsUnionAll()

usesLocalFilePerTable()

usesLocalFiles()

Métodos sem suporte

getBestRowIdentifier(String, String, String, int, boolean)

getVersionColumns(String, String, String)

Comportamento específico do Snowflake

public ResultSet getColumnPrivileges(String, String, String, String)

Este método sempre retorna um conjunto vazio porque o Snowflake não tem suporte para privilégios em nível de coluna.

public ResultSet getStreams(String, String, String)
Objetivo

Este método retorna informações sobre fluxos contidos em bancos de dados e esquemas especificados.

Argumentos
  • originalCatalog: Nome do banco de dados.

  • orignalSchemaPattern: Padrão para identificar o esquema (suporte para curingas).

  • streamName: Nome do fluxo (suporte para curingas).

Retornos

Este método retorna um ResultSet contendo linhas para cada fluxo, com cada linha incluindo as seguintes colunas:

  • name: Nome do fluxo.

  • database_name: Nome do banco de dados para o esquema que contém o fluxo.

    Um objeto de banco de dados (por exemplo, um fluxo) está contido em um esquema, que por sua vez está contido em um banco de dados.

  • schema_name: Nome do esquema que contém o fluxo.

  • owner: Função proprietária do fluxo.

  • comment: Comentários associados ao fluxo.

  • table_name: Nome da tabela cujas atualizações DML são rastreadas pelo fluxo.

  • source_type: Objeto de origem para o fluxo. Os valores possíveis incluem:

    • table

    • view

    • directory table

    • external table

  • base_tables: Tabelas subjacentes para a exibição. Esta coluna se aplica apenas aos fluxos em exibições.

  • type: Tipo do fluxo. Atualmente, a função sempre retorna DELTA.

  • stale: Se o fluxo foi lido pela última vez antes da hora de stale_after passar. Se TRUE, o fluxo pode estar obsoleto.

    Quando um fluxo está obsoleto, ele não pode ser lido. Você pode recriar o fluxo para retomar a leitura a partir dele. Para evitar que um fluxo fique obsoleto, você precisa consumi-lo antes que a hora stale_after tenha passado.

  • mode: Tipo de fluxo. Os valores possíveis incluem:

    • APPEND_ONLY: Indica que o fluxo é apenas para anexação.

    • INSERT_ONLY: Indica que o fluxo só retorna informações para as linhas inseridas. Este valor se aplica apenas aos fluxos em tabelas externas.

    • DEFAULT: Indica que o fluxo está em tabelas.

Gera

Este método gera um SQLException se ocorrer um erro SQL.

Suporte para parâmetros nulos

Alguns métodos DatabaseMetaData aceitam null valores para nomes de objetos do banco de dados (por exemplo, nomes de tabelas/catálogos). Por padrão, um valor null significa que o método não filtra com esse argumento. Por exemplo, se você passar getColumns() um valor null para o argumento schemaPattern, então getColumns() retorna valores para todos os esquemas.

Para alguns desses métodos, o comportamento padrão para argumentos null pode ser substituído pelos seguintes parâmetros:

Suporte para curingas em nomes de objetos de banco de dados

Alguns métodos DatabaseMetaData têm suporte para curingas com correspondência de padrões em nomes de objetos de banco de dados, tais como nomes de tabelas/catálogos. Os caracteres curingas com suporte são:

  • %: Corresponde a qualquer cadeia de zero ou mais caracteres.

  • _: Corresponde a qualquer um dos caracteres.

O exemplo a seguir mostra o que passar para o método getColumns() para obter os nomes de todas as tabelas e todas as colunas no banco de dados (TEMPORARYDB1) e esquema (TEMPORARYSCHEMA1) especificados:

getColumns( connection,
    "TEMPORARYDB1",      // Database name.
    "TEMPORARYSCHEMA1",  // Schema name.
    "%",                 // All table names.
    "%"                  // All column names.
    );
Copy

É comum que nomes de objetos de banco de dados, como nomes de tabelas, contenham sublinhados, por exemplo SHIPPING_ADDRESSES. Pesquisar SHIPPING_ADDRESSES sem usar um caractere de escape para o sublinhado encontrará não apenas a tabela chamada SHIPPING_ADDRESSES, mas também tabelas como SHIPPING2ADDRESSES. Se você quiser pesquisar SHIPPING_ADDRESSES, mas não SHIPPING2ADDRESSES, precisa usar um caractere de escape para o caractere curinga para indicar que ele deve ser tratado como um literal. Use uma barra invertida como caractere de escape.

A própria barra invertida também deve ter um caractere de escape se você quiser usá-la como um caractere literal. Por exemplo, para pesquisar uma tabela chamada T_&\ , na qual o sublinhado, o E comercial e a barra invertida são partes literais do nome, e não caracteres curinga ou caracteres de escape, a chamada do método deve ser semelhante ao seguinte:

getColumns(
    connection, "TEMPORARYDB1", "TEMPORARYSCHEMA1", "T\\_\\\\", "%" // All column names.
    );
Copy

Cada barra invertida acima deve ter um caractere de escape a mais, porque o compilador Java espera que as barras tenham esse caractere de escape:

Java sees...............: T\\_\\%\\\\
SQL sees................: T\_\%\\
The actual table name is: T_%\
Copy

Objeto: Driver

O driver fornece métodos que permitem obter uma conexão com o banco de dados, assim como obter informações sobre o próprio driver.

Métodos

Nome do método

Notas

Métodos com suporte

acceptsURL(String)

connect(String, Properties)

getMajorVersion()

getMinorVersion()

getPropertyInfo(String, Properties)

isDisableIncidents()

jdbcCompliant()

setDisableIncidents()

Comportamento específico do Snowflake

Nenhum.

Exemplos

O seguinte trecho de código mostra parte de um programa para obter informações de propriedade:

  // Demonstrate the Driver.getPropertyInfo() method.
  public static void do_the_real_work(String connectionString) throws Exception {
    Properties properties = new Properties();
    Driver driver = DriverManager.getDriver(connectionString);
    DriverPropertyInfo[] dpinfo = driver.getPropertyInfo("", properties);
    System.out.println(dpinfo[0].description);
  }
Copy

Observe que, no caso geral, a chamada para este método deve estar dentro de um loop. Se você recuperar informações sobre uma propriedade e depois definir essa propriedade, a nova configuração pode fazer com que propriedades adicionais sejam relevantes, então você pode precisar recuperá-las e defini-las.

Objeto: ParameterMetaData

Isto fornece informações sobre parâmetros em um PreparedStatement.

Métodos

Nome do método

Notas

Métodos com suporte

getParameterCount()

getParameterType(int)

getParameterTypeName(int)

getPrecision(int)

getScale(int)

isNullable

Métodos sem suporte

getParameterClassName(int)

getParameterMode()

isSigned

Comportamento específico do Snowflake

Nenhum.

Objeto: PreparedStatement

A interface PreparedStatement descreve métodos que, por exemplo, permitem a execução de consultas.

Métodos

Nome do método

Notas

Métodos com suporte

addBatch()

Comportamento específico do Snowflake (consulte detalhes abaixo).

clearParameters()

getParameterMetaData()

execute()

Comportamento específico do Snowflake (consulte detalhes abaixo).

executeBatch(String)

executeLargeBatch(String)

executeLargeUpdate(String)

executeQuery()

Comportamento específico do Snowflake (consulte detalhes abaixo).

executeUpdate()

Comportamento específico do Snowflake (consulte detalhes abaixo).

setBigDecimal(int, BigDecimal)

setBoolean(int, boolean)

setByte(int, byte)

setBytes(int, byte[])

setDate(int, Date)

setDouble(int, double)

setFloat(int, float)

setInt(int, int)

setLong(int, long)

setNull(int, int)

setObject(int, Object, int, int)

Comportamento específico do Snowflake (consulte detalhes abaixo).

setObject(int, Object, int)

Comportamento específico do Snowflake (consulte detalhes abaixo).

setObject(int, Object)

setShort(int, short)

setString(int, String)

setTime(int, Time)

setTimestamp(int, Timestamp)

Métodos sem suporte

setAsciiStream(int, InputStream, int)

setBinaryStream(int, InputStream, int)

setUnicodeStream(int, InputStream, int)

Comportamento específico do Snowflake

  • addBatch()

    Com suporte apenas para instruções INSERT.

    O método addBatch (combinado com executeBatch) permite a inserção de múltiplas linhas de dados como parte de uma única instrução INSERT.

    A diferença entre usar um lote ou não é semelhante à diferença entre usar uma inserção de várias linhas e uma inserção de uma única linha:

    INSERT INTO t1 (c1, c2) VALUES (1, 'One');   -- single row inserted.
    
    INSERT INTO t1 (c1, c2) VALUES (1, 'One'),   -- multiple rows inserted.
                                   (2, 'Two'),
                                   (3, 'Three');
    
    Copy

    Inserir lotes de linhas é geralmente mais eficiente do que inserir o mesmo número de linhas em instruções INSERT individuais. A vantagem é ainda maior quando se utiliza AUTOCOMMIT (isto é, quando cada INSERT é uma transação individual).

    Para um exemplo de uso do addBatch, consulte Inserções em lote.

    Nota

    Há um limite máximo para o tamanho dos dados que você pode vincular ou que pode combinar em um lote. Para obter mais detalhes, consulte Limites no tamanho do texto de consulta.

  • execute()

    Este método compila e executa a instrução SQL que foi fornecida quando o objeto PreparedStatement foi criado. A instrução pode ser qualquer tipo de instrução SQL. O método execute() não retorna um ResultSet.

    Este método não retorna nada. Se estiver executando uma consulta e precisar obter um ResultSet quando a instrução for executada, então use o método executeQuery().

  • executeQuery()

    Este método compila e executa a instrução SQL que foi fornecida quando o objeto PreparedStatement foi criado e retorna um ResultSet.

  • executeUpdate()

    Este método compila e executa a instrução SQL que foi fornecida quando o objeto PreparedStatement foi criado. A instrução deve ser DML (INSERT, UPDATE, DELETE, etc.) ou uma instrução SQL que não retorne nada (por exemplo, uma instrução DDL).

    O método executeUpdate() retorna um número inteiro, que é o número de linhas atualizadas se a instrução for DML. Se a instrução não atualizou nenhuma linha, a função retorna 0.

    Se você precisar executar uma instrução SQL que retorna um ResultSet, então use um método diferente, tal como executeQuery().

  • setObject()

    Quando você vincula uma variável de carimbo de data/hora a uma coluna de carimbo de data/hora, pode usar este método para especificar a variação do carimbo (TIMESTAMP_LTZ , TIMESTAMP_NTZ , TIMESTAMP_TZ) que deve ser usada para interpretar o valor do carimbo. Para obter mais detalhes, consulte Vinculação de variáveis a colunas de carimbo de data/hora.

Interface: SnowflakePreparedStatement

A interface SnowflakePreparedStatement contém métodos específicos do Snowflake. Quando você usa o driver JDBC do Snowflake para criar um objeto do tipo PreparedStatement, por exemplo chamando o método Connection.prepareStatement(), você recebe um objeto de um tipo diferente (oculto) específico do Snowflake, que implementa tanto a interface JDBC PreparedStatement quanto a interface SnowflakePreparedStatement. Para acessar os métodos SnowflakePreparedStatement naquele objeto, você desencapsula o objeto.

Métodos adicionais

Os métodos abaixo se somam aos métodos com suporte na interface PreparedStatement.

Nome do método

Descrição

executeAsyncQuery()

Realiza uma consulta assíncrona.

getQueryID()

Retorna a ID da consulta do Snowflake executada mais recentemente desta SnowflakePreparedStatement.

executeAsyncQuery()
Objetivo

Este método realiza uma consulta assíncrona, que envolve o envio de uma instrução SQL para execução, retornando depois o controle ao chamador sem esperar que a consulta termine.

Qualquer instrução SQL válida para executeQuery() também é válida para executeAsyncQuery().

Nota

As instruções de transferência de arquivos, tais como PUT e GET, são válidas para executeAsyncQuery(), mas comportam-se de forma síncrona.

Argumentos

Nenhum.

Retornos

Um ResultSet “vazio”. O usuário deve pesquisar o conjunto de resultados chamando resultSet.unwrap(SnowflakeResultSet.class).getStatus() até que os resultados da consulta fiquem disponíveis.

Gera

Este método pode gerar SQLException.

Notas

Este método é uma extensão do Snowflake para o padrão JDBC. Para usar este método, você precisa desencapsular o objeto PreparedStatement.

Exemplos
...
PreparedStatement prepStatement = connection.prepareStatement("insert into testTable values (?)");
prepStatement.setInt(1, 33);
ResultSet rs = prepStatement.executeAsyncQuery();
...
Copy

Consulte Exemplos de consultas assíncronas para um exemplo mais extenso usando o método SnowflakeStatement.executeAsyncQuery() bastante semelhante.

getQueryID()
Objetivo

Este método retorna a ID da consulta do Snowflake executada mais recentemente desta SnowflakePreparedStatement Se nenhuma consulta tiver sido executada ainda com esta instrução preparada, o método retorna nulo.

Argumentos

Nenhum.

Retornos

O método retorna a ID como uma cadeia de caracteres que contém uma UUID.

Gera

O método pode gerar SQLException.

Notas

Este método é uma extensão do Snowflake para o padrão JDBC. Para usar este método, você precisa desencapsular o SnowflakePreparedStatement.

Para consultas assíncronas, a ID da consulta não se torna disponível até que a execução da instrução esteja concluída. Se você chamar SnowflakePreparedStatement.getQueryID() após chamar executeAsyncQuery() mas antes do fim da execução da instrução, o valor de retorno pode ser NULL. Em vez disso, chame resultSet.unwrap(SnowflakeResultSet.class).getQueryID() no objeto ResultSet retornado por executeAsyncQuery().

Exemplos

Este exemplo parcial mostra como chamar o método:

    // Retrieve the query ID from the PreparedStatement.
    String queryID;
    queryID = preparedStatement.unwrap(SnowflakePreparedStatement.class).getQueryID();
Copy

Enum: QueryStatus

O tipo de enumeração é um tipo específico do Snowflake que:

  • Define as constantes que representam o status de uma consulta assíncrona.

  • Define métodos que retornam detalhes sobre quaisquer erros ocorridos durante a execução de instruções SQL.

Este tipo de enumeração está no pacote net.snowflake.client.core.

Constantes de enumeração

Cada constante de enumeração representa um status possível diferente para a consulta assíncrona.

Constante de enumeração

Descrição

RUNNING

A consulta ainda está em andamento.

ABORTING

A consulta está em processo de ser cancelada no lado do servidor.

SUCCESS

A consulta foi concluída com sucesso.

FAILED_WITH_ERROR

A consulta foi concluída sem sucesso.

QUEUED

A consulta está enfileirada para execução (ou seja, ainda não começou a funcionar), normalmente porque está esperando por recursos.

DISCONNECTED

A conexão da sessão está quebrada. O estado da consulta mudará para “FAILED_WITH_ERROR“ em breve.

RESUMING_WAREHOUSE

O warehouse está iniciando e a consulta ainda não está em andamento.

BLOCKED

A instrução está à espera de um bloqueio mantido por outra instrução.

NO_DATA

Os dados sobre a instrução ainda não estão disponíveis, normalmente porque a instrução ainda não começou a ser executada.

Métodos

O tipo de enumeração define os seguintes métodos, que você pode usar para obter detalhes sobre um erro quando o status da consulta é FAILED_WITH_ERROR.

Nome do método

Descrição

getErrorCode()

Retorna o código de erro do servidor caso ocorra um erro durante a execução da consulta.

getErrorMessage()

Retorna a mensagem de erro do servidor caso ocorra um erro durante a execução da consulta.

getErrorCode()
Objetivo

Se ocorrer um erro durante a execução da consulta, este método retorna o código de erro do servidor.

Argumentos

Nenhum.

Retornos

O método retorna o código de erro como um int. Se nenhum erro ocorreu, o método retorna o valor 0.

Exemplos
QueryStatus queryStatus = resultSet.unwrap(SnowflakeResultSet.class).getStatus();
if (queryStatus == queryStatus.FAILED_WITH_ERROR) {
  // Print the error code to stdout
  System.out.format("Error code: %d%n", queryStatus.getErrorCode());
}
Copy

Consulte Exemplos de consultas assíncronas para um exemplo mais extenso que inclui uma chamada a este método.

getErrorMessage()
Objetivo

Se ocorrer um erro durante a execução da consulta, este método retorna a mensagem de erro do servidor.

Argumentos

Nenhum.

Retornos

O método retorna a mensagem de erro como um String. Se nenhum erro ocorreu, o método retorna o valor No error reported.

Exemplos
QueryStatus queryStatus = resultSet.unwrap(SnowflakeResultSet.class).getStatus();
if (queryStatus == queryStatus.FAILED_WITH_ERROR) {
  // Print the error message to stdout
  System.out.format("Error message: %s%n", queryStatus.getErrorMessage());
}
Copy

Consulte Exemplos de consultas assíncronas para um exemplo mais extenso que inclui uma chamada a este método.

Objeto: ResultSet

A interface ResultSet documenta métodos que recuperam os resultados das consultas; por exemplo, para ler as linhas e colunas retornadas por uma instrução SELECT.

Um ResultSet do Snowflake é um objeto somente de leitura; não é atualizável.

Métodos

Nome do método

Notas

Métodos com suporte

close()

Comportamento específico do Snowflake (consulte detalhes abaixo).

findColumn(String)

getBigDecimal(int, int)

getBigDecimal(String, int)

getBoolean(int)

getBoolean(String)

getByte(int)

getByte(String)

getBytes(int)

getBytes(String)

getDate(int)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getDate(int, Calendar)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getDate(String)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getDate(String, Calendar)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getDouble(int)

getDouble(String)

getFloat(int)

getFloat(String)

getInt(int)

getInt(String)

getLong(int)

getLong(String)

getMetaData()

Comportamento específico do Snowflake (consulte detalhes abaixo).

getObject(int)

getObject(String)

getShort(int)

getShort(String)

getString(int)

getString(String)

getTime(int)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getTime(String)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getTimestamp(int)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getTimestamp(String)

Comportamento específico do Snowflake (consulte detalhes abaixo).

next()

Comportamento específico do Snowflake (consulte detalhes abaixo).

wasNull()

Métodos sem suporte

clearWarnings()

getArray(int)

getArray(String)

getAsciiStream(int)

getAsciiStream(String)

getBinaryStream(int)

getBinaryStream(String)

getCursorName()

getUnicodeStream(int)

getUnicodeStream(String)

getWarnings()

Comportamento específico do Snowflake

  • close()

    Fecha o objeto. Após um objeto ter sido fechado, chamar quase qualquer método do objeto fechado acionará uma SQLException. Chamar close para um objeto já fechado é algo inofensivo e não aciona uma exceção.

  • getDate(), getTime(), getTimestamp()

    Na versão 3.12.17 e versões posteriores do driver JDBC, estes métodos utilizam o fuso horário da sessão (especificado pelo parâmetro TIMEZONE). As versões mais antigas utilizam o fuso horário do JVM.

    Para mudar estes métodos para usar o fuso horário do JVM, defina o parâmetro JDBC_USE_SESSION_TIMEZONE como FALSE.

  • getMetaData()

    Se o objeto ResultSet for para uma consulta assíncrona, então este método causa um bloqueio até que a consulta tenha terminado de ser executada. Você pode usar resultSet.unwrap(SnowflakeResultSet.class).getStatus() para obter o status da consulta antes de chamar este método.

  • next()

    Isto faz com que a próxima linha no resultado defina a linha “atual”. Chamadas para os métodos get*(), como getInt(), obtêm valores da linha atual.

    Se o ResultSet tiver sido fechado por uma chamada para o método close, então chamadas subsequentes para next retornam false, em vez de acionar uma exceção.

    Se o objeto ResultSet for para uma consulta assíncrona, então este método causa um bloqueio até que os resultados fiquem disponíveis. Você pode usar resultSet.unwrap(SnowflakeResultSet.class).getStatus() para obter o status da consulta antes de chamar este método.

Interface: SnowflakeResultSet

A interface SnowflakeResultSet contém métodos específicos do Snowflake. Quando você usa o driver JDBC do Snowflake para criar um objeto do tipo ResultSet, por exemplo chamando o método Statement.getResultSet(), você recebe um objeto de um tipo diferente (oculto) específico do Snowflake, que implementa tanto a interface JDBC ResultSet quanto a interface SnowflakeResultSet. Para acessar os métodos SnowflakeResultSet naquele objeto, você desencapsula o objeto.

Métodos adicionais

Nome do método

Descrição

getQueryID()

Retorna a ID da consulta do Snowflake da instrução que gerou este conjunto de resultados.

getStatus()

Para um ResultSet retornado por uma consulta assíncrona, retorna o status da consulta.

getQueryID()
Objetivo

Este método retorna a ID da consulta do Snowflake da instrução que gerou este conjunto de resultados.

Argumentos

Nenhum.

Retornos

O método retorna a ID como uma cadeia de caracteres que contém uma UUID.

Notas

Este método é uma extensão do Snowflake para o padrão JDBC. Para usar este método, você precisa desencapsular o ResultSet.

Exemplos
    String queryID2;
    queryID2 = resultSet.unwrap(SnowflakeResultSet.class).getQueryID();
Copy
getStatus()
Objetivo

Para um ResultSet retornado por uma consulta assíncrona, como SnowflakeStatement.executeAsyncQuery(), este método retorna o status da consulta. O status indica se a consulta foi concluída com sucesso, sem sucesso, ou se ainda não foi concluída.

Argumentos

Nenhum.

Retornos

A QueryStatus constante de enumeração.

Gera

Este método pode gerar SQLException.

Notas

Este método é uma extensão do Snowflake para o padrão JDBC. Para usar este método, você precisa desencapsular o objeto ResultSet.

Exemplos
QueryStatus queryStatus = resultSet.unwrap(SnowflakeResultSet.class).getStatus();
Copy

Consulte Exemplos de consultas assíncronas para um exemplo mais extenso que inclui uma chamada a este método.

Objeto: ResultSetMetaData

Isto fornece informações sobre um ResultSet, por exemplo, o número de colunas no ResultSet.

Métodos

Nome do método

Notas

Métodos com suporte

getCatalogName(int)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getColumnCount()

getColumnDisplaySize(int)

getColumnLabel(int)

getColumnName(int)

getColumnType(int)

getColumnTypeName(int)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getPrecision(int)

getScale(int)

getSchemaName(int)

Comportamento específico do Snowflake (consulte detalhes abaixo).

getTableName(int)

Comportamento específico do Snowflake (consulte detalhes abaixo).

isAutoIncrement(int)

isCaseSensitive(int)

isCurrency(int)

isDefinitelyWritable(int)

isNullable(int)

isReadOnly(int)

isSearchable(int)

isSigned(int)

isWritable(int)

Métodos sem suporte

Nenhum.

Comportamento específico do Snowflake

  • A classe ResultSetMetaData não tem um método close(). Um objeto ResultSetMetaData aberto é fechado implicitamente quando o usuário fecha o ResultSet a partir do qual o objeto ResultSetMetaData foi criado.

  • getCatalogName(), getSchemaName(), getTableName()

    Se o objeto ResultSet for para uma consulta assíncrona, estes métodos retornam cadeias de caracteres vazias.

  • Nas colunas GEOGRAPHY, getColumnTypeName retorna GEOGRAPHY.

    Observe que os métodos getColumnType e getColumnClassName não indicam que o tipo de coluna é GEOGRAPHY.

Interface: SnowflakeResultSetMetaData

A interface SnowflakeResultSetMetaData contém métodos específicos do Snowflake. Quando você usa o driver JDBC do Snowflake para criar um objeto do tipo ResultSetMetaData, por exemplo chamando o método ResultSet.getMetaData(), você recebe um objeto de um tipo diferente (oculto) específico do Snowflake, que implementa tanto a interface JDBC ResultSetMetaData quanto a interface SnowflakeResultSetMetaData. Para acessar os métodos SnowflakeResultSetMetaData naquele objeto, você desencapsula o objeto.

Métodos adicionais

Nome do método

Notas

Métodos com suporte

getColumnIndex(String columnName)

getColumnNames()

getInternalColumnType(int column)

getQueryID()

getColumnIndex(String columnName):
Objetivo

Retorna o índice da coluna que corresponde a columnName. Por exemplo, se uma coluna chamada “BirthDate“ for a terceira coluna da tabela, então getColumnIndex(“BirthDate“) retorna 2. (Os índices são baseados em 0, não em 1).

Argumentos

O nome da coluna para a qual você quer encontrar o índice.

Retornos

Retorna um número inteiro que contém o índice da coluna que corresponde a columnName. Se columnName não corresponder a nenhuma coluna no conjunto de resultados, isto retorna -1.

Gera

O método pode gerar SQLException.

getColumnNames():
Objetivo

Esta função retorna a lista de todos os nomes de colunas no conjunto de resultados.

Isto é diferente da função getColumnName(int column) em ResultSetMetaData, que retorna um único nome de coluna baseado em um índice.

Argumentos

Nenhum.

Retornos

O tipo de dados do valor retornado é “List<cadeia de caracteres>”. A lista contém os nomes das colunas. Os nomes estão na mesma ordem que os índices das colunas.

Gera

O método pode gerar SQLException.

getInternalColumnType(int column):
Objetivo

Retorna o tipo de dados da coluna especificada.

Argumentos

column: Indica o índice (baseado em 1) da coluna para a qual você quer o tipo de dados.

Retornos

Retorna o tipo de dados da coluna especificada. O tipo de dados é um número inteiro.

Gera

O método pode gerar SQLException.

getQueryID()
Objetivo

Retorna a ID da consulta do Snowflake à qual se aplicam estes metadados.

Argumentos

Nenhum.

Retornos

Este método retorna a ID da consulta para a qual estes metadados foram gerados. A ID da consulta é uma cadeia de caracteres que contém uma UUID. As informações sobre UUIDs estão incluídas na descrição da função SQL UUID_STRING.

Gera

O método pode gerar SQLException.

Objeto: SnowflakeTimestampWithTimezone

Um objeto SnowflakeTimestampWithTimezone fornece informações sobre o fuso horário associado ao objeto Java Timestamp do carimbo de data/hora. Você pode usar este objeto para extrair o fuso horário diretamente, em vez de analisar as informações da cadeia de caracteres Java Timestamp. Para acessar esta funcionalidade, você deve importar as seguintes bibliotecas Java:

  • java.sql.Timestamp;

  • java.time.ZonedDateTime;

  • java.util.TimeZone;

Métodos

Nome do método

Notas

Construtores

SnowflakeTimestampWithTimezone(
    long seconds,
    int nanoseconds,
    TimeZone tz)
Copy
  • Número de segundos desde 1 de janeiro de 1970 (hora da Internet).

  • Número de nanossegundos fracionários.

  • ID do fuso horário.

SnowflakeTimestampWithTimezone(
    Timestamp ts,
    TimeZone tz)
Copy
  • Objeto Timestamp representando a hora desejada.

  • ID do fuso horário.

SnowflakeTimestampWithTimezone(
    Timestamp ts)
Copy
  • Objeto Timestamp representando a hora desejada.

Métodos com suporte

getTimezone()

Comportamento específico do Snowflake (consulte detalhes abaixo).

toZonedDateTime()

Comportamento específico do Snowflake (consulte detalhes abaixo).

Comportamento específico do Snowflake

  • getTimezone()

    Retorna o fuso horário a partir do carimbo de data/hora.

    import java.sql.Timestamp;
    import java.time.ZonedDateTime;
    import java.util.TimeZone;
    
    public void testGetTimezone() {
        String timezone = "Australia/Sydney";
    
        // Create a timestamp from a point in time
        Long datetime = System.currentTimeMillis();
        Timestamp currentTimestamp = new Timestamp(datetime);
        SnowflakeTimestampWithTimezone ts =
            new SnowflakeTimestampWithTimezone(currentTimestamp, TimeZone.getTimeZone(timezone));
    
        // Verify timezone was set
        assertEquals(ts.getTimezone().getID(), timezone);
    }
    
    Copy
  • toZonedDateTime()

    Converte um carimbo de data/hora SnowflakeTimestampWithTimezone em um objeto de data com fuso (objeto Java ZonedDateTime).

    import java.sql.Timestamp;
    import java.time.ZonedDateTime;
    import java.util.TimeZone;
    
    public void testToZonedDateTime() {
        String timezone = "Australia/Sydney";
        String zonedDateTime = "2022-03-17T10:10:08+11:00[Australia/Sydney]";
    
        // Create a timestamp from a point in time
        Long datetime = 1647472208000L;
        Timestamp timestamp = new Timestamp(datetime);
        SnowflakeTimestampWithTimezone ts =
            new SnowflakeTimestampWithTimezone(timestamp, TimeZone.getTimeZone(timezone));
        ZonedDateTime zd = ts.toZonedDateTime();
    
        // Verify timestamp was converted to zoned datetime
        assertEquals(zd.toString(), zonedDateTime);
    }
    
    Copy

Objeto: Statement

Um objeto Statement representa uma instrução SQL. O objeto de instrução permite que os usuários executem tarefas como:

  • Execute uma instrução SQL.

  • Definir um tempo limite para a execução da instrução.

  • Recuperar um conjunto de resultados para uma consulta.

Métodos

Nome do método

Notas

Métodos com suporte

cancel()

close()

Comportamento específico do Snowflake (consulte detalhes abaixo).

execute(String)

executeBatch(String)

executeLargeBatch(String)

executeLargeUpdate(String)

executeQuery(String)

executeUpdate(String)

getBatchQueryID()

Comportamento específico do Snowflake (consulte detalhes abaixo).

getMaxFieldSize()

getMaxRows()

getMoreResults()

getQueryTimeout()

getResultSet()

getUpdateCount()

Comportamento específico do Snowflake (consulte detalhes abaixo).

setCursorName(String)

setMaxRows(int)

setQueryTimeout(int)

Métodos sem suporte

clearWarnings()

getWarnings()

setEscapeProcessing(boolean)

setMaxFieldSize(int)

Comportamento específico do Snowflake

  • close()

    Este método fecha o objeto. Após um objeto ter sido fechado, chamar quase qualquer método do objeto fechado acionará uma SQLException. Chamar close para um objeto já fechado é algo inofensivo e não aciona uma exceção.

  • getBatchQueryID()

    Este método retorna uma lista de IDs de consulta do Snowflake do lote de consultas executadas mais recentemente desta Statement. Se nenhuma consulta tiver sido executada ainda com a instrução, o método retorna nulo.

    Este método é uma extensão do Snowflake para o padrão JDBC. Para usar este método, você precisa desencapsular a instrução. Por exemplo:

        connection.setAutoCommit(false);
        statement.addBatch("SELECT 1;");
        statement.addBatch("SELECT 2;");
        statement.executeBatch();
        connection.commit();
        connection.setAutoCommit(true);
        List<String> batchQueryIDs1;
        // Since getQueryID is not standard JDBC API, we must call unwrap() to
        // use these Snowflake methods.
        batchQueryIDs1 = statement.unwrap(SnowflakeStatement.class).getBatchQueryIDs();
        int num_query_ids = batchQueryIDs1.size();
        if (num_query_ids != 2) {
          System.out.println("ERROR: wrong number of query IDs in batch 1.");
        }
        // Check that each query ID is plausible.
        for (int i = 0; i < num_query_ids; i++) {
          String qid = batchQueryIDs1.get(i);
          if (!is_plausible_query_id(qid)) {
            msg = "SEVERE WARNING: suspicious query ID in batch";
            System.out.println("msg");
            System.out.println(qid);
          }
        }
    
    Copy
  • getUpdateCount()

    Este método retorna o número de linhas atualizadas pela instrução SQL executada mais recentemente.

    • Se a instrução for DML (INSERT, UPDATE, DELETE, etc.), então getUpdateCount() retorna o número de linhas que foram adicionadas, excluídas ou alteradas. Observe que este valor pode ser 0 se nenhuma linha for alterada.

    • Se a instrução for SELECT, então getUpdateCount() retorna -1.

    • Se a instrução for DDL, então getUpdateCount() retorna -1.

Interface: SnowflakeStatement

A interface SnowflakeStatement contém métodos específicos do Snowflake. Quando você usa o driver JDBC do Snowflake para criar um objeto do tipo , por exemplo chamando o método Connection.createStatement(), você recebe um objeto de um tipo diferente (oculto) específico do Snowflake, que implementa tanto a interface de instrução JDBC quanto a interface SnowflakeStatement. Para acessar os métodos SnowflakeStatement naquele objeto, você desencapsula o objeto.

Métodos adicionais

Nome do método

Descrição

executeAsyncQuery()

Realiza uma consulta assíncrona.

getQueryID()

Retorna a ID da consulta do Snowflake executada mais recentemente desta Statement.

setParameter(String, Value)

Define os parâmetros específicos do Snowflake.

executeAsyncQuery(String)
Objetivo

Este método realiza uma consulta assíncrona, que envolve o envio de uma instrução SQL para execução, retornando depois o controle ao chamador sem esperar que a consulta termine.

Argumentos

Uma cadeia de caracteres contendo o comando SQL a executar. Qualquer instrução SQL válida para executeQuery() também é válida para executeAsyncQuery().

Nota

As instruções de transferência de arquivos, tais como PUT e GET, são válidas para executeAsyncQuery(), mas comportam-se de forma síncrona.

Retornos

Um ResultSet “vazio”. O usuário deve pesquisar o conjunto de resultados chamando resultSet.unwrap(SnowflakeResultSet.class).getStatus() até que os resultados da consulta fiquem disponíveis.

Gera

O método pode gerar SQLException.

Notas

Este método é uma extensão do Snowflake para o padrão JDBC. Para usar este método, você precisa desencapsular o objeto Statement.

Exemplos

Consulte Exemplos de consultas assíncronas para um exemplo que inclui uma chamada a este método.

getQueryID()
Objetivo

Este método retorna a ID da consulta do Snowflake executada mais recentemente desta Statement

Argumentos

Nenhum.

Retornos

A ID da consulta executada mais recentemente desta instrução. A ID da consulta é uma cadeia de caracteres que contém uma UUID. Se nenhuma consulta tiver sido executada ainda com a instrução, o método retorna nulo.

Gera

O método pode gerar SQLException.

Notas

Este método é uma extensão do Snowflake para o padrão JDBC. Para usar este método, você precisa desencapsular a instrução.

Para consultas assíncronas, a ID da consulta não se torna disponível até que a execução da instrução esteja concluída. Se você chamar SnowflakeStatement.getQueryID() após chamar executeAsyncQuery() mas antes do fim da execução da instrução, o valor de retorno pode ser NULL. Em vez disso, chame resultSet.unwrap(SnowflakeResultSet.class).getQueryID() no objeto ResultSet retornado por executeAsyncQuery().

Exemplos
    String queryID1;
    queryID1 = statement.unwrap(SnowflakeStatement.class).getQueryID();
Copy
setParameter(String parameter_name, <type> <value>)
Objetivo

A classe SnowflakeStatement fornece o método setParameter como uma extensão do Snowflake. Isto permite que o chamador defina parâmetros JDBC específicos do Snowflake.

O método está sobrecarregado. Parâmetros JDBC diferentes requerem tipos de dados diferentes. Existe um método para cada tipo de dados válido que pode ser passado como o segundo argumento para a função.

Argumentos
parameter_name:

Esta cadeia de caracteres precisa conter o nome de um parâmetro JDBC pré-definido do Snowflake. Os parâmetros JDBC pré-definidos (e seus valores ou intervalos válidos) estão listados abaixo:

Parâmetro JDBC

Notas

MULTI_STATEMENT_COUNT

Número inteiro especificando o número de instruções (0 = número ilimitado de instruções; 1 ou superior indica o número exato de instruções que devem ser executadas).

value:

Este é o valor a ser atribuído ao parâmetro JDBC especificado. Certifique-se de que o tipo de dados seja compatível com o parâmetro JDBC que você especificou.

Retornos

Nada.

Gera

Esta função pode gerar SQLException.

Notas

Este método é uma extensão do Snowflake para o padrão JDBC. Para usar este método, você precisa desencapsular a instrução.

Exemplos
Statement statement1;
...
// Tell Statement to expect to execute 2 statements:
statement1.unwrap(SnowflakeStatement.class).setParameter(
        "MULTI_STATEMENT_COUNT", 2);
Copy

Interface: SQLException

Objetos SQLException são gerados por métodos do driver JDBC quando ocorre um erro e contêm informações sobre esse erro.

Nome do método

Descrição

getErrorCode()

Retorna um código de erro específico do Snowflake.

getMessage()

Isto retorna uma cadeia de caracteres que descreve o erro.

getSQLState()

Retorna o SQLState.

getErrorCode()
Objetivo

Este método retorna um código de erro Snowflake personalizado.

Argumentos

Nenhum.

Retornos

Um código de erro específico do Snowflake.

Notas

Consulte também o método getSQLState().

getMessage()
Objetivo

Este método retorna uma cadeia de caracteres que descreve o erro.

Argumentos

Nenhum.

Retornos

Uma mensagem de erro específica do Snowflake.

getSQLState()
Objetivo

Este método retorna uma cadeia de caracteres que contém um valor alfanumérico de 5 caracteres baseado no erro.

Argumentos

Nenhum.

Retornos

Um SQLState específico do Snowflake. Um SQLState é uma cadeia de 5 caracteres alfanuméricos que indica o erro específico que ocorreu.