# CLOB

O valor CLOB (objeto grande caractere) pode ter comprimento de até 2.147.483.647 caracteres. O CLOB é utilizado para armazenar dados baseados em caractere UNICODE, como documentos grandes em qualquer conjunto de caracteres.

O comprimento do CLOB é especificado em caracteres, a menos que seja especificado um dos sufixos K, M ou G, relacionados aos múltiplos 1024, 1024*1024 e 1024*1024*1024, respectivamente.

Nota: O comprimento do CLOB é especificado em caracteres (UNICODE).

#### Sintaxe

    {CLOB |CHARACTER LARGE OBJECT}(comprimento [{{K |M |G}]))

Tipo Java correspondente em tempo de compilação

java.sql.Clob

Tipo do metadado do JDBC (java.sql.Types)

CLOB

#### Tipo do metadado do JDBC

java.sql.Clob

#### Tipo do metadado do JDBC (java.sql.Types)

CLOB

No java.sql.ResultSet é utilizado o método getClob para obter um tratador de CLOB para os dados subjacentes.

#### Informação relacionada

Consulte java.sql.Blob e java.sql.Clob.

    import java.sql.*;

    public class clob
    {
            public static void main(String[] args) {
                    try {
                            String url = "jdbc:derby:clobberyclob;create=true";

                            Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
                            Connection conn = DriverManager.getConnection(url);

                Statement s = conn.createStatement();
                s.executeUpdate("CREATE TABLE documents (id INT, text CLOB(64 K))");
                conn.commit();

                // --- adicionar um arquivo
                java.io.File file = new java.io.File("asciifile.txt");
                int fileLength = (int) file.length();

                // - primeiro, criar um fluxo de entrada
                java.io.InputStream fin = new java.io.FileInputStream(file);
                PreparedStatement ps = conn.prepareStatement("INSERT
                INTO documents VALUES (?, ?)");
                ps.setInt(1, 1477);

                // - definir o valor do parâmetro de entrada para o fluxo de entrada
                ps.setAsciiStream(2, fin, fileLength);
                ps.execute();
                conn.commit();

                // --- ler as colunas
                ResultSet rs = s.executeQuery("SELECT text FROM documents
                 WHERE id = 1477");
                while (rs.next()) {
                    java.sql.Clob aclob = rs.getClob(1);
                    java.io.InputStream ip = rs.getAsciiStream(1);
                    int c = ip.read();
                    while (c > 0) {
                        System.out.print((char)c);
                        c = ip.read();
                    }
                    System.out.print("\n");
                    // ...
                }
            } catch (Exception e) {
                System.out.println("Erro! "+e);
            }
        }
    }

Tópico pai: Tipos de dado
Conceitos relacionados
Visão geral dos tipos de dado nativos
Tipos numéricos
Referências relacionadas
Tipo de dado - atribuições e comparação, classificação e ordenação
BIGINT
BLOB
CHAR
CHAR FOR BIT DATA
DATE
DECIMAL
DOUBLE
DOUBLE PRECISION
FLOAT
INTEGER
LONG VARCHAR
LONG VARCHAR FOR BIT DATA
NUMERIC
REAL
SMALLINT
TIME
TIMESTAMP
VARCHAR
VARCHAR FOR BIT DATA