Condividi tramite


Utilizzo di tipi di dati di base

I tipi di dati JDBC di base corrispondono ai tipi di dati introdotti nell'API principale di JDBC 1.0. Nel driver JDBC per Microsoft SQL Server 2005 i tipi di dati JDBC di base vengono utilizzati per convertire i tipi di dati SQL Server in un formato comprensibile nel linguaggio di programmazione Java e viceversa.

Nella tabella seguente sono riportati i mapping predefiniti tra i tipi di dati di base di SQL Server, JDBC e del linguaggio di programmazione Java:

Tipi di SQL Server Tipi JDBC (java.sql.Types) Tipi del linguaggio Java

bigint

BIGINT

long

timestamp

binary

BINARY

byte[]

bit

BIT

boolean

char

nchar

CHAR

String

decimal

money

smallmoney

DECIMAL

java.math.BigDecimal

float

DOUBLE

double

int

INTEGER

int

image

LONGVARBINARY

byte[]

text

ntext

LONGVARCHAR

String

numeric

NUMERIC

java.math.BigDecimal

real

REAL

float

smallint

SMALLINT

short

datetime

smalldatetime

TIMESTAMP

java.sql.Timestamp

varbinary

VARBINARY

byte[]

varchar

nvarchar

VARCHAR

String

tinyint

TINYINT

short

uniqueidentifier

CHAR

String

Nota

Il tipo di dati sqlvariant di SQL Server non è attualmente supportato dal driver JDBC. Se si utilizza una query per recuperare dati da un tabella contenente una colonna con il tipo di dati sqlvariant, verrà generatà un'eccezione.

Nelle sezioni seguenti vengono forniti esempi di come sia possibile utilizzare il driver JDBC e i tipi di dati di base. Per un esempio più dettagliato dell'utilizzo dei tipi di dati di base in un'applicazione Java, vedere Esempio di tipi di dati di base.

Recupero di dati in forma di stringa

Se è necessario recuperare dati da un'origine dei dati mappata a uno qualsiasi dei tipi di dati JDBC di base, per visualizzarli come stringa, o se non sono richiesti dati fortemente tipizzati, è possibile utilizzare il metodo getString della classe SQLServerResultSet, come nell'esempio seguente:

String SQL = "SELECT TOP 10 * FROM Person.Contact";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(SQL);

while (rs.next()) {
   System.out.println(rs.getString(4) + " " + rs.getString(6));
}
rs.close();
stmt.close();

Recupero di dati per tipo di dati

Se è necessario recuperare, da un'origine dei dati, dati di cui si conosce il tipo, è consigliabile utilizzare uno dei metodi get<Type> della classe SQLServerResultSet, noti anche come metodi per il richiamo. Con i metodi get<Type> è possibile utilizzare un nome o un indice di colonna, come nell'esempio seguente:

ResultSet rs = stmt.executeQuery("SELECT lname, job_id FROM employee
   WHERE (lname = 'Brown')");
rs.next();
short empJobID = rs.getShort("job_id");
rs.close();
stmt.close();

Nota

I metodi con scala getUnicodeStream e getBigDecimal sono obsoleti e non sono supportati dal driver JDBC.

Aggiornamento di dati per tipo di dati

Se è necessario aggiornare il valore di un campo in un'origine dei dati, è consigliabile utilizzare uno dei metodi update<Type> della classe SQLServerResultSet. Nell'esempio seguente il metodo updateInt viene utilizzato insieme al metodo updateRow per aggiornare i dati nell'origine dei dati:

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 
ResultSet rs = stmt.executeQuery("SELECT lname, job_id FROM employee
   WHERE (lname = 'Brown')");
rs.next();
short empJobID = rs.getInt(2);
empJobID++;
rs.first();
rs.updateInt(2, empJobID);
rs.updateRow();
rs.close();
stmt.close();

Nota

Il driver JDBC non consente di aggiornare una colonna di testo di SQL Server con un nome di lunghezza superiore a 127 caratteri. Se si tenta di aggiornare una colonna con un nome di lunghezza superiore a 127 caratteri, verrà generata un'eccezione.

Aggiornamento di dati mediante query con parametri

Se è necessario aggiornare dati in un'origine dei dati utilizzando una query con parametri, è possibile impostare il tipo di dati dei parametri utilizzando uno dei metodi set<Type> della classe SQLServerPreparedStatement, noti anche come metodi per l'impostazione. Nell'esempio seguente viene utilizzato il metodo prepareStatement per precompilare la query con parametri, quindi viene utilizzato il metodo setString per impostare il valore stringa del parametro prima di chiamare il metodo executeUpdate.

PreparedStatement pstmt = con.prepareStatement("UPDATE employee SET
   fname = ? WHERE (lname = 'Brown')");
String first = "Bob";
pstmt.setString(1, first);
int rowCount = pstmt.executeUpdate();
pstmt.close();

Per ulteriori informazioni sulle query con parametri, vedere Utilizzo di istruzioni SQL con parametri.

Passaggio di parametri a una stored procedure

Se è necessario passare parametri tipizzati in una stored procedure, è possibile impostare i parametri in base all'indice o al nome utilizzando uno dei metodi set<Type> della classe SQLServerCallableStatement. Nell'esempio seguente viene utilizzato il metodo prepareCall per impostare la chiamata alla stored procedure, quindi viene utilizzato il metodo setString per impostare il parametro per la chiamata prima di chiamare il metodo executeQuery.

CallableStatement cstmt = con.prepareCall("{call employee_jobid(?)}");
String lname = "Brown";
cstmt.setString(1, lname);
Resultset rs = cstmt.executeQuery();
rs.close();
cstmt.close();

Nota

In questo esempio viene restituito un set di risultati con i risultati dell'esecuzione della stored procedure.

Per ulteriori informazioni sull'utilizzo del driver JDBC con stored procedure e parametri di input, vedere Utilizzo di una stored procedure con parametri di input.

Recupero di parametri da una stored procedure

Se è necessario recuperare parametri da una stored procedure, occorre innanzitutto registrare un parametro OUT in base al nome o all'indice, utilizzando il metodo registerOutParameter della classe SQLServerCallableStatement, e quindi assegnare il parametro OUT restituito a una variabile appropriata, dopo aver eseguito la chiamata alla stored procedure. Nell'esempio seguente viene utilizzato il metodo prepareCall per impostare la chiamata alla stored procedure, quindi viene utilizzato il metodo registerOutParameter per impostare il parametro OUT e infine viene utilizzato il metodo setString per impostare il parametro per la chiamata prima di chiamare il metodo executeQuery. Il valore restituito dal parametro OUT della stored procedure viene recuperato utilizzando il metodo getShort.

CallableStatement cstmt = con.prepareCall("{call employee_jobid (?, ?)}");
Cstmt.registerOutParameter(2, java.sql.Types.SMALLINT);
String lname = "Brown";
cstmt.setString(1, lname);
Resultset rs = cstmt.executeQuery();
short empJobID = cstmt.getShort(2);
rs.close();
cstmt.close();

Nota

Oltre al parametro out, può essere restituito anche un set di risultati con i risultati dell'esecuzione della stored procedure.

Per ulteriori informazioni su come utilizzare il driver JDBC con stored procedure e parametri di output, vedere Utilizzo di una stored procedure con parametri di output.

Vedere anche

Altre risorse

Informazioni sui tipi di dati del driver JDBC