English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Le istruzioni SQL per leggere i dati da una query di database restituiscono i dati del result set. La clausola SELECT è il metodo standard per selezionare righe dal database e visualizzarle nel result set. L'interfaccia Sql.ResultSet rappresenta il result set della query di database.
L'oggetto ResultSet mantiene un cursore che punta alla riga corrente del result set. Il termine 'result set' si riferisce alle righe e alle colonne di dati contenuti nell'oggetto ResultSet.
I metodi dell'interfaccia ResultSet possono essere divisi in tre categorie-
Metodi di navigazione: Utilizzato per muovere il cursore a destra e a sinistra.
Metodo di lettura: Utilizzato per visualizzare i dati delle colonne della riga corrente indicata dal cursore.
Metodo di aggiornamento:Utilizzato per aggiornare i dati di ciascuna colonna della riga corrente. Successivamente, l'aggiornamento può anche essere aggiornato nel database di base.
Il cursore può muoversi in base alle proprietà del ResultSet. Queste proprietà sono specificate quando si crea lo Statement che genera il ResultSet corrispondente.
JDBC fornisce i seguenti metodi di connessione per creare statement con ResultSet richiesto-
createStatement(int RSType, int RSConcurrency);
prepareStatement(String SQL, int RSType, int RSConcurrency);
prepareCall(String sql, int RSType, int RSConcurrency);
Il primo parametro rappresenta il tipo dell'oggetto ResultSet, il secondo parametro è uno dei due costanti ResultSet, utilizzato per specificare se il result set è solo lettura o aggiornabile.
I possibili RSType sono elencati di seguito. Se non si specifica alcun tipo di ResultSet, si ottiene automaticamente un ResultSet di tipo TYPE_FORWARD_ONLY.
Tipo | Descrizione |
---|---|
ResultSet.TYPE_FORWARD_ONLY | Il cursore può muoversi solo avanti nel result set. |
ResultSet.TYPE_SCROLL_INSENSITIVE | Il cursore può scorrere avanti e indietro e il result set non è sensibile alle modifiche apportate al database da altre persone dopo aver creato il result set. |
ResultSet.TYPE_SCROLL_SENSITIVE. | Il cursore può scorrere avanti e indietro e il result set è molto sensibile alle modifiche apportate al database da altre persone dopo aver creato il result set. |
Le possibili RSConcurrency sono indicate di seguito. Se non specifici alcun tipo di concordanza, verrà automaticamente assegnato il tipo CONCUR_READ_ONLY.
Concordanza | Descrizione |
---|---|
ResultSet.CONCUR_READ_ONLY | Creare un set di risultati readonly. Questo è il valore predefinito |
ResultSet.CONCUR_UPDATABLE | Creare un set di risultati aggiornabile. |
Fino ad ora, tutti gli esempi che abbiamo scritto possono essere scritti come segue, questo esempio inizializza un oggetto Statement per creare un oggetto ResultSet readonly-
try { Statement stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); } catch(Exception ex) { .... } finally { .... }
L'interfaccia ResultSet contiene diversi metodi che riguardano il movimento del cursore, tra cui -
序号 | 方法与说明 |
---|---|
1 | public void beforeFirst() throws SQLException Spostare il cursore prima della prima riga. |
2 | public void afterLast() throws SQLException Spostare il cursore dopo l'ultima riga. |
3 | public boolean first() throws SQLException Spostare il cursore alla prima riga. |
4 | public void last() throws SQLException Spostare il cursore all'ultima riga. |
5 | public boolean absolute(int row) throws SQLException Spostare il cursore alla riga specificata. |
6 | public boolean relative(int row) throws SQLException Spostare il cursore di un numero specificato di righe avanti o indietro rispetto alla sua posizione attuale. |
7 | public boolean previous() throws SQLException Spostare il cursore alla riga precedente. Se la riga precedente non è nel set di risultati, questo metodo restituisce false. |
8 | public boolean next() throws SQLException Spostare il cursore alla riga successiva. Se non ci sono più righe nel set di risultati, questo metodo restituisce false. |
9 | public int getRow() throws SQLException Restituisce il numero di riga puntato dal cursore. |
10 | public void moveToInsertRow() throws SQLException Sposta il cursore a una riga speciale nel set di risultati, che può essere utilizzata per inserire una nuova riga nel database. Ricorda la posizione corrente del cursore. |
11 | public void moveToCurrentRow() throws SQLException Se il cursore è attualmente posizionato nella riga di inserimento, il cursore viene spostato alla riga corrente; altrimenti, questo metodo non esegue alcuna operazione |
为了更好地理解,让我们研究“Navigazione - Esempio di codice。
L'interfaccia ResultSet contiene molti metodi utilizzati per ottenere i dati della riga corrente.
Ogni possibile tipo di dati ha un metodo get, ogni metodo get ha due versioni -
Colonna con il nome della colonna.
Indice con l'indice della colonna.
Ad esempio, se l'interessante colonna di visualizzazione contiene un int, è necessario utilizzare uno dei metodi getInt() di ResultSet
序号 | 方法与说明 |
---|---|
1 | public int getInt(String columnName) throws SQLException Restituisce l'intero nella colonna con il nome columnName della riga corrente. |
2 | public int getInt(int columnIndex) throws SQLException Restituisce il numero intero nella colonna di indice specificata della riga corrente. L'indice della colonna parte da 1, il che significa che la prima colonna della riga è 1, la seconda colonna è 2 e così via. |
Allo stesso modo, nell'interfaccia ResultSet, per ogni uno degli otto tipi di base Java e per i tipi comuni (come java.lang.String, java.lang.Object e java.net.URL), ci sono metodi get.
Ci sono anche metodi per ottenere i tipi di dati SQL java.sql.Date, java.sql.Time, java.sql.Timestamp, java.sql.Clob e java.sql.Blob. Consulta la documentazione per ulteriori informazioni sull'uso di questi tipi di dati SQL.
Per comprendere meglio, esaminiamoVisualizza - Esempio di codice。
L'interfaccia ResultSet contiene una raccolta di metodi di aggiornamento utilizzati per aggiornare i dati del set di risultati.
Come per il metodo get, ogni tipo di dati ha due metodi di aggiornamento -
Colonna con il nome della colonna.
Indice con l'indice della colonna.
Ad esempio, per aggiornare la colonna Stringa della riga corrente del set di risultati, è possibile utilizzare uno dei seguenti metodi updateString() -
序号 | 方法与说明 |
---|---|
1 | public void updateString(int columnIndex, String s) throws SQLException 将指定列中的 String 更改为 s 的值。 |
2 | public void updateString(String columnName, String s) throws SQLException 与前面的方法类似,只是列是通过其名称而不是索引指定的。 |
java.sql 包中有八种原始数据类型以及 String,Object,URL 和 SQL 数据类型的更新方法。
更新结果集中的一行会更改 ResultSet 对象中当前行的列,但不会更改基础数据库中的行。要更新对数据库中行的更改,您需要调用以下方法之一。
序号 | 方法与说明 |
---|---|
1 | public void updateRow() 通过更新数据库中相应的行来更新当前行。 |
2 | public void deleteRow() 从数据库中删除当前行 |
3 | public void refreshRow() 刷新结果集中的数据,以反映数据库中最近的任何更改。 |
4 | public void cancelRowUpdates() 取消对当前行所做的任何更新。 |
5 | public void insertRow() 在数据库中插入一行。只有当光标指向插入行时,才能调用此方法。 |
为了更好地理解,让我们研究“更新示例代码。