JDBC主要API學習
一、JDBC主要API簡介
JDBC API 是一系列的接口,它使得應用程序能夠進行數據庫聯接,執行SQL語句,並且得到返回結果。
二、Driver 接口
Java.sql.Driver 接口是所有 JDBC 驅動程序需要實現的接口。這個接口是提供給數據庫廠商使用的,不同數據庫廠商提供不同的實現
在程序中不需要直接去訪問實現了 Driver 接口的類,而是由驅動程序管理器類(java.sql.DriverManager)去調用這些Driver實現
三、加載與注冊 JDBC 驅動
加載 JDBC 驅動需調用 Class 類的靜態方法 forName(),向其傳遞要加載的 JDBC 驅動的類名
DriverManager 類是驅動程序管理器類,負責管理驅動程序
通常不用顯式調用 DriverManager 類的 registerDriver() 方法來注冊驅動程序類的實例,因為 Driver 接口的驅動程序類都包含了靜態代碼塊,在這個靜態代碼塊中,會調用DriverManager.registerDriver() 方法來注冊自身的一個實例
四、建立連接
可以調用 DriverManager 類的 getConnection() 方法建立到數據庫的連接
JDBC URL 用於標識一個被注冊的驅動程序,驅動程序管理器通過這個 URL 選擇正確的驅動程序,從而建立到數據庫的連接。
JDBC URL的標准由三部分組成,各部分間用冒號分隔。
①jdbc:<子協議>:<子名稱>
②協議:JDBC URL中的協議總是jdbc
③子協議:子協議用於標識一個數據庫驅動程序
④子名稱:一種標識數據庫的方法。子名稱可以依不同的子協議而變化,用子名稱的目的是為了定位數據庫提供足夠的信息
五、幾種常用數據庫的JDBC URL
①對於 Oracle 數據庫連接,采用如下形式:
jdbc:oracle:thin:@localhost:1521:sid
②對於 SQLServer 數據庫連接,采用如下形式:
jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=sid
③對於 MYSQL 數據庫連接,采用如下形式:
jdbc:mysql://localhost:3306/sid
六、訪問數據庫
數據庫連接被用於向數據庫服務器發送命令和 SQL 語句,在連接建立后,需要對數據庫進行訪問,執行 sql 語句
在 java.sql 包中有 3 個接口分別定義了對數據庫的調用的不同方式:
①Statement
②PrepatedStatement
③CallableStatement
七、Statement
通過調用 Connection 對象的 createStatement 方法創建該對象
該對象用於執行靜態的 SQL 語句,並且返回執行結果
Statement 接口中定義了下列方法用於執行 SQL 語句:
①ResultSet excuteQuery(String sql)
②int excuteUpdate(String sql)
八、ResultSet
通過調用 Statement 對象的 excuteQuery() 方法創建該對象
ResultSet 對象以邏輯表格的形式封裝了執行數據庫操作的結果集,ResultSet 接口由數據庫廠商實現
ResultSet 對象維護了一個指向當前數據行的游標,初始的時候,游標在第一行之前,可以通過 ResultSet 對象的 next() 方法移動到下一行
ResultSet 接口的常用方法:
boolean |
absolute(int row) 將光標移動到此 ResultSet 對象的給定行編號。 |
void |
afterLast() 將光標移動到此 ResultSet 對象的末尾,正好位於最后一行之后。 |
void |
beforeFirst() 將光標移動到此 ResultSet 對象的開頭,正好位於第一行之前。 |
void |
cancelRowUpdates() 取消對 ResultSet 對象中的當前行所作的更新。 |
void |
clearWarnings() 清除在此 ResultSet 對象上報告的所有警告。 |
void |
close() 立即釋放此 ResultSet 對象的數據庫和 JDBC 資源,而不是等待該對象自動關閉時發生此操作。 |
void |
deleteRow() 從此 ResultSet 對象和底層數據庫中刪除當前行。 |
int |
findColumn(String columnLabel) 將給定的 ResultSet 列標簽映射到其 ResultSet 列索引。 |
boolean |
first() 將光標移動到此 ResultSet 對象的第一行。 |
Array |
getArray(int columnIndex) 以 Java 編程語言中 Array 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Array |
getArray(String columnLabel) 以 Java 編程語言中 Array 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
InputStream |
getAsciiStream(int columnIndex) 以 ASCII 字符流的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
InputStream |
getAsciiStream(String columnLabel) 以 ASCII 字符流的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
BigDecimal |
getBigDecimal(int columnIndex) 以具有全精度的 java.math.BigDecimal 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
BigDecimal |
getBigDecimal(int columnIndex, int scale) 已過時。 |
BigDecimal |
getBigDecimal(String columnLabel) 以具有全精度的 java.math.BigDecimal 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
BigDecimal |
getBigDecimal(String columnLabel, int scale) 已過時。 |
InputStream |
getBinaryStream(int columnIndex) 以未解釋字節的流的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
InputStream |
getBinaryStream(String columnLabel) 以未解釋的 byte 流的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Blob |
getBlob(int columnIndex) 以 Java 編程語言中 Blob 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Blob |
getBlob(String columnLabel) 以 Java 編程語言中 Blob 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
boolean |
getBoolean(int columnIndex) 以 Java 編程語言中 boolean 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
boolean |
getBoolean(String columnLabel) 以 Java 編程語言中 boolean 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
byte |
getByte(int columnIndex) 以 Java 編程語言中 byte 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
byte |
getByte(String columnLabel) 以 Java 編程語言中 byte 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
byte[] |
getBytes(int columnIndex) 以 Java 編程語言中 byte 數組的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
byte[] |
getBytes(String columnLabel) 以 Java 編程語言中 byte 數組的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Reader |
getCharacterStream(int columnIndex) 以 java.io.Reader 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Reader |
getCharacterStream(String columnLabel) 以 java.io.Reader 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Clob |
getClob(int columnIndex) 以 Java 編程語言中 Clob 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Clob |
getClob(String columnLabel) 以 Java 編程語言中 Clob 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
int |
getConcurrency() 獲取此 ResultSet 對象的並發模式。 |
String |
getCursorName() 獲取此 ResultSet 對象使用的 SQL 光標的名稱。 |
Date |
getDate(int columnIndex) 以 Java 編程語言中 java.sql.Date 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Date |
getDate(int columnIndex, Calendar cal) 以 Java 編程語言中 java.sql.Date 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Date |
getDate(String columnLabel) 以 Java 編程語言中的 java.sql.Date 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Date |
getDate(String columnLabel, Calendar cal) 以 Java 編程語言中 java.sql.Date 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
double |
getDouble(int columnIndex) 以 Java 編程語言中 double 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
double |
getDouble(String columnLabel) 以 Java 編程語言中 double 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
int |
getFetchDirection() 獲取此 ResultSet 對象的獲取方向。 |
int |
getFetchSize() 獲取此 ResultSet 對象的獲取大小。 |
float |
getFloat(int columnIndex) 以 Java 編程語言中 float 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
float |
getFloat(String columnLabel) 以 Java 編程語言中 float 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
int |
getHoldability() 獲取此 ResultSet 對象的可保存性 |
int |
getInt(int columnIndex) 以 Java 編程語言中 int 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
int |
getInt(String columnLabel) 以 Java 編程語言中 int 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
long |
getLong(int columnIndex) 以 Java 編程語言中 long 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
long |
getLong(String columnLabel) 以 Java 編程語言中 long 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
ResultSetMetaData |
getMetaData() 獲取此 ResultSet 對象的列的編號、類型和屬性。 |
Reader |
getNCharacterStream(int columnIndex) 以 java.io.Reader 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Reader |
getNCharacterStream(String columnLabel) 以 java.io.Reader 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
NClob |
getNClob(int columnIndex) 以 Java 編程語言中 NClob 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
NClob |
getNClob(String columnLabel) 以 Java 編程語言中 NClob 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
String |
getNString(int columnIndex) 以 Java 編程語言中 String 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
String |
getNString(String columnLabel) 以 Java 編程語言中 String 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Object |
getObject(int columnIndex) 以 Java 編程語言中 Object 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Object |
getObject(int columnIndex, Map<String,Class<?>> map) 以 Java 編程語言中 Object 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Object |
getObject(String columnLabel) 以 Java 編程語言中 Object 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Object |
getObject(String columnLabel, Map<String,Class<?>> map) 以 Java 編程語言中 Object 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Ref |
getRef(int columnIndex) 以 Java 編程語言中 Ref 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Ref |
getRef(String columnLabel) 以 Java 編程語言中 Ref 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
int |
getRow() 獲取當前行編號。 |
RowId |
getRowId(int columnIndex) 以 Java 編程語言中 java.sql.RowId 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
RowId |
getRowId(String columnLabel) 以 Java 編程語言中 java.sql.RowId 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
short |
getShort(int columnIndex) 以 Java 編程語言中 short 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
short |
getShort(String columnLabel) 以 Java 編程語言中 short 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
SQLXML |
getSQLXML(int columnIndex) 以 Java 編程語言中 java.sql.SQLXML 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
SQLXML |
getSQLXML(String columnLabel) 以 Java 編程語言中 java.sql.SQLXML 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Statement |
getStatement() 獲取生成此 ResultSet 對象的 Statement 對象。 |
String |
getString(int columnIndex) 以 Java 編程語言中 String 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
String |
getString(String columnLabel) 以 Java 編程語言中 String 的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Time |
getTime(int columnIndex) 以 Java 編程語言中 java.sql.Time 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Time |
getTime(int columnIndex, Calendar cal) 以 Java 編程語言中 java.sql.Time 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Time |
getTime(String columnLabel) 以 Java 編程語言中 java.sql.Time 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Time |
getTime(String columnLabel, Calendar cal) 以 Java 編程語言中 java.sql.Time 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Timestamp |
getTimestamp(int columnIndex) 以 Java 編程語言中 java.sql.Timestamp 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Timestamp |
getTimestamp(int columnIndex, Calendar cal) 以 Java 編程語言中 java.sql.Timestamp 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Timestamp |
getTimestamp(String columnLabel) 以 Java 編程語言中 java.sql.Timestamp 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
Timestamp |
getTimestamp(String columnLabel, Calendar cal) 以 Java 編程語言中 java.sql.Timestamp 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
int |
getType() 獲取此 ResultSet 對象的類型。 |
InputStream |
getUnicodeStream(int columnIndex) 已過時。 使用 getCharacterStream 取代 getUnicodeStream |
InputStream |
getUnicodeStream(String columnLabel) 已過時。 使用 getCharacterStream 代替 |
URL |
getURL(int columnIndex) 以 Java 編程語言中 java.net.URL 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
URL |
getURL(String columnLabel) 以 Java 編程語言中 java.net.URL 對象的形式獲取此 ResultSet 對象的當前行中指定列的值。 |
SQLWarning |
getWarnings() 獲取此 ResultSet 對象上的調用報告的第一個警告。 |
void |
insertRow() 將插入行的內容插入到此 ResultSet 對象和數據庫中。 |
boolean |
isAfterLast() 獲取光標是否位於此 ResultSet 對象的最后一行之后。 |
boolean |
isBeforeFirst() 獲取光標是否位於此 ResultSet 對象的第一行之前。 |
boolean |
isClosed() 獲取此 ResultSet 對象是否已關閉。 |
boolean |
isFirst() 獲取光標是否位於此 ResultSet 對象的第一行。 |
boolean |
isLast() 獲取光標是否位於此 ResultSet 對象的最后一行。 |
boolean |
last() 將光標移動到此 ResultSet 對象的最后一行。 |
void |
moveToCurrentRow() 將光標移動到記住的光標位置,通常為當前行。 |
void |
moveToInsertRow() 將光標移動到插入行。 |
boolean |
next() 將光標從當前位置向前移一行。 |
boolean |
previous() 將光標移動到此 ResultSet 對象的上一行。 |
void |
refreshRow() 用數據庫中的最近值刷新當前行。 |
boolean |
relative(int rows) 按相對行數(或正或負)移動光標。 |
boolean |
rowDeleted() 獲取是否已刪除某行。 |
boolean |
rowInserted() 獲取當前行是否已有插入。 |
boolean |
rowUpdated() 獲取是否已更新當前行。 |
void |
setFetchDirection(int direction) 設置此 ResultSet 對象中行的處理方向。 |
void |
setFetchSize(int rows) 為 JDBC 驅動程序設置此 ResultSet 對象需要更多行時應該從數據庫獲取的行數。 |
void |
updateArray(int columnIndex, Array x) 用 java.sql.Array 值更新指定列。 |
void |
updateArray(String columnLabel, Array x) 用 java.sql.Array 值更新指定列。 |
void |
updateAsciiStream(int columnIndex, InputStream x) 用 ascii 流值更新指定的列。 |
void |
updateAsciiStream(int columnIndex, InputStream x, int length) 用 ascii 流值更新指定列,該列將具有指定字節數。 |
void |
updateAsciiStream(int columnIndex, InputStream x, long length) 用 ascii 流值更新指定的列,該值將具有指定的字節數。 |
void |
updateAsciiStream(String columnLabel, InputStream x) 用 ascii 流值更新指定列。 |
void |
updateAsciiStream(String columnLabel, InputStream x, int length) 用 ascii 流值更新指定列,該列具有指定的字節數。 |
void |
updateAsciiStream(String columnLabel, InputStream x, long length) 用 ascii 流值更新指定的列,該值將具有指定的字節數。 |
void |
updateBigDecimal(int columnIndex, BigDecimal x) 用 java.math.BigDecimal 值更新指定列。 |
void |
updateBigDecimal(String columnLabel, BigDecimal x) 用 java.sql.BigDecimal 值更新指定列。 |
void |
updateBinaryStream(int columnIndex, InputStream x) 用二進制流值更新指定的列。 |
void |
updateBinaryStream(int columnIndex, InputStream x, int length) 用二進制流值更新指定列,該列將具有指定字節數。 |
void |
updateBinaryStream(int columnIndex, InputStream x, long length) 用二進制流值更新指定的列,該值將具有指定的字節數。 |
void |
updateBinaryStream(String columnLabel, InputStream x) 用二進制流值更新指定列。 |
void |
updateBinaryStream(String columnLabel, InputStream x, int length) 用二進制流值更新指定列,該列具有指定的字節數。 |
void |
updateBinaryStream(String columnLabel, InputStream x, long length) 用二進制流值更新指定的列,該值將具有指定的字節數。 |
void |
updateBlob(int columnIndex, Blob x) 用 java.sql.Blob 值更新指定列。 |
void |
updateBlob(int columnIndex, InputStream inputStream) 使用給定輸入流值更新指定列。 |
void |
updateBlob(int columnIndex, InputStream inputStream, long length) 使用給定輸入流更新指定的列,該流將具有指定的字節數。 |
void |
updateBlob(String columnLabel, Blob x) 用 java.sql.Blob 值更新指定列。 |
void |
updateBlob(String columnLabel, InputStream inputStream) 使用給定輸入流值更新指定列。 |
void |
updateBlob(String columnLabel, InputStream inputStream, long length) 使用給定輸入流更新指定列,該流將具有指定的字節數。 |
void |
updateBoolean(int columnIndex, boolean x) 用 boolean 值更新指定列。 |
void |
updateBoolean(String columnLabel, boolean x) 用 boolean 值更新指定列。 |
void |
updateByte(int columnIndex, byte x) 用 byte 值更新指定列。 |
void |
updateByte(String columnLabel, byte x) 用 byte 值更新指定列。 |
void |
updateBytes(int columnIndex, byte[] x) 用 byte 數組值更新指定列。 |
void |
updateBytes(String columnLabel, byte[] x) 用字節數組值更新指定列。 |
void |
updateCharacterStream(int columnIndex, Reader x) 用字符流值更新指定的列。 |
void |
updateCharacterStream(int columnIndex, Reader x, int length) 用字符流值更新指定列,該列將具有指定字節數。 |
void |
updateCharacterStream(int columnIndex, Reader x, long length) 用字符流值更新指定的列,該值將具有指定的字節數。 |
void |
updateCharacterStream(String columnLabel, Reader reader) 用字符流值更新指定列。 |
void |
updateCharacterStream(String columnLabel, Reader reader, int length) 用字符流值更新指定列,該列具有指定的字節數。 |
void |
updateCharacterStream(String columnLabel, Reader reader, long length) 用字符流值更新指定的列,該值將具有指定的字節數。 |
void |
updateClob(int columnIndex, Clob x) 用 java.sql.Clob 值更新指定列。 |
void |
updateClob(int columnIndex, Reader reader) 使用給定的 Reader 對象更新指定列。 |
void |
updateClob(int columnIndex, Reader reader, long length) 使用給定的 Reader 對象更新指定列,該對象是給定的字符長度數目。 |
void |
updateClob(String columnLabel, Clob x) 用 java.sql.Clob 值更新指定列。 |
void |
updateClob(String columnLabel, Reader reader) 使用給定的 Reader 對象更新指定列。 |
void |
updateClob(String columnLabel, Reader reader, long length) 使用給定的 Reader 對象更新指定列,該對象是給定的字符長度數目。 |
void |
updateDate(int columnIndex, Date x) 用 java.sql.Date 值更新指定列。 |
void |
updateDate(String columnLabel, Date x) 用 java.sql.Date 值更新指定列。 |
void |
updateDouble(int columnIndex, double x) 用 double 值更新指定列。 |
void |
updateDouble(String columnLabel, double x) 用 double 值更新指定列。 |
void |
updateFloat(int columnIndex, float x) 用 float 值更新指定列。 |
void |
updateFloat(String columnLabel, float x) 用 float 值更新指定列。 |
void |
updateInt(int columnIndex, int x) 用 int 值更新指定列。 |
void |
updateInt(String columnLabel, int x) 用 int 值更新指定列。 |
void |
updateLong(int columnIndex, long x) 用 long 值更新指定列。 |
void |
updateLong(String columnLabel, long x) 用 long 值更新指定列。 |
void |
updateNCharacterStream(int columnIndex, Reader x) 用字符流值更新指定的列。 |
void |
updateNCharacterStream(int columnIndex, Reader x, long length) 用字符流值更新指定的列,該值將具有指定的字節數。 |
void |
updateNCharacterStream(String columnLabel, Reader reader) 用字符流值更新指定的列。 |
void |
updateNCharacterStream(String columnLabel, Reader reader, long length) 用字符流值更新指定的列,該值將具有指定的字節數。 |
void |
updateNClob(int columnIndex, NClob nClob) 用 java.sql.NClob 值更新指定的列。 |
void |
updateNClob(int columnIndex, Reader reader) 使用給定的 Reader 對象更新指定列。 |
void |
updateNClob(int columnIndex, Reader reader, long length) 使用給定的 Reader 對象更新指定的列,該對象是給定的字符長度數目。 |
void |
updateNClob(String columnLabel, NClob nClob) 用 java.sql.NClob 值更新指定的列。 |
void |
updateNClob(String columnLabel, Reader reader) 使用給定的 Reader 對象更新指定列。 |
void |
updateNClob(String columnLabel, Reader reader, long length) 使用給定的 Reader 對象更新指定的列,該對象是給定的字符長度數目。 |
void |
updateNString(int columnIndex, String nString) 用 String 值更新指定的列。 |
void |
updateNString(String columnLabel, String nString) 用 String 值更新指定的列。 |
void |
updateNull(int columnIndex) 用 null 值更新指定列。 |
void |
updateNull(String columnLabel) 用 null 值更新指定列。 |
void |
updateObject(int columnIndex, Object x) 用 Object 值更新指定列。 |
void |
updateObject(int columnIndex, Object x, int scaleOrLength) 用 Object 值更新指定列。 |
void |
updateObject(String columnLabel, Object x) 用 Object 值更新指定列。 |
void |
updateObject(String columnLabel, Object x, int scaleOrLength) 用 Object 值更新指定列。 |
void |
updateRef(int columnIndex, Ref x) 用 java.sql.Ref 值更新指定列。 |
void |
updateRef(String columnLabel, Ref x) 用 java.sql.Ref 值更新指定列。 |
void |
updateRow() 用此 ResultSet 對象的當前行的新內容更新底層數據庫。 |
void |
updateRowId(int columnIndex, RowId x) 用 RowId 值更新指定列。 |
void |
updateRowId(String columnLabel, RowId x) 用 RowId 值更新指定的列。 |
void |
updateShort(int columnIndex, short x) 用 short 值更新指定列。 |
void |
updateShort(String columnLabel, short x) 用 short 值更新指定列。 |
void |
updateSQLXML(int columnIndex, SQLXML xmlObject) 用 java.sql.SQLXML 值更新指定列。 |
void |
updateSQLXML(String columnLabel, SQLXML xmlObject) 用 java.sql.SQLXML 值更新指定的列。 |
void |
updateString(int columnIndex, String x) 用 String 值更新指定列。 |
void |
updateString(String columnLabel, String x) 用 String 值更新指定列。 |
void |
updateTime(int columnIndex, Time x) 用 java.sql.Time 值更新指定列。 |
void |
updateTime(String columnLabel, Time x) 用 java.sql.Time 值更新指定列。 |
void |
updateTimestamp(int columnIndex, Timestamp x) 用 java.sql.Timestamp 值更新指定列。 |
void |
updateTimestamp(String columnLabel, Timestamp x) 用 java.sql.Timestamp 值更新指定列。 |
boolean |
wasNull() 報告最后一個讀取的列是否具有值 SQL NULL 。 |
九、數據類型轉換表
十、代碼示例

1 package me.jdbc.day02; 2
3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.sql.Connection; 6 import java.sql.Date; 7 import java.sql.DriverManager; 8 import java.sql.ResultSet; 9 import java.sql.SQLException; 10 import java.sql.Statement; 11 import java.util.Properties; 12
13 import org.junit.Test; 14
15 public class ReviewTest { 16
17 /**
18 * 1. ResultSet 封裝 JDBC 的查詢結果. 19 */
20 @Test 21 public void testResultSet() { 22
23 Connection connection = null; 24 Statement statement = null; 25 ResultSet resultSet = null; 26
27 try { 28 // 1. 獲取數據庫連接
29 connection = getConnection(); 30
31 // 2. 調用 Connection 對象的 createStatement() 方法獲取 Statement 對象
32 statement = connection.createStatement(); 33
34 // 3. 准備 SQL 語句
35 String sql = "SELECT id, name, email, birth FROM customers"; 36
37 // 4. 發送 SQL 語句: 調用 Statement 對象的 executeQuery(sql) 方法. 38 // 得到結果集對象 ResultSet
39 resultSet = statement.executeQuery(sql); 40
41 // 5. 處理結果集: 42 // 5.1 調用 ResultSet 的 next() 方法: 查看結果集的下一條記錄是否有效, 43 // 若有效則下移指針
44 while (resultSet.next()) { 45 // 5.2 getXxx() 方法獲取具體的列的值.
46 int id = resultSet.getInt(1); 47 String name = resultSet.getString(2); 48 String email = resultSet.getString(3); 49 Date birth = resultSet.getDate(4); 50
51 System.out.println(id); 52 System.out.println(name); 53 System.out.println(email); 54 System.out.println(birth); 55
56 System.out.println(); 57 } 58
59 } catch (Exception e) { 60 e.printStackTrace(); 61 } finally { 62 // 6. 關閉數據庫資源
63 releaseDB(resultSet, statement, connection); 64 } 65
66 } 67
68 /**
69 * 1. Statement 是用於操作 SQL 的對象 70 */
71 @Test 72 public void testStatement() { 73 Connection connection = null; 74 Statement statement = null; 75
76 try { 77 // 1. 獲取數據庫連接
78 connection = getConnection(); 79
80 // 2. 調用 Connection 對象的 createStatement() 方法獲取 Statement 對象
81 statement = connection.createStatement(); 82
83 // 3. 准備 SQL 語句
84 String sql = "UPDATE customers SET name = 'Jerry' WHERE id = 5"; 85
86 // 4. 發送 SQL 語句: 調用 Statement 對象的 executeUpdate(sql) 方法
87 statement.executeUpdate(sql); 88
89 } catch (Exception e) { 90 e.printStackTrace(); 91 } finally { 92 // 5. 關閉數據庫資源: 由里向外關閉.
93 releaseDB(null, statement, connection); 94 } 95
96 } 97
98 public void releaseDB(ResultSet resultSet, Statement statement, Connection connection) { 99
100 if (resultSet != null) { 101 try { 102 resultSet.close(); 103 } catch (SQLException e) { 104 e.printStackTrace(); 105 } 106 } 107
108 if (statement != null) { 109 try { 110 statement.close(); 111 } catch (SQLException e) { 112 e.printStackTrace(); 113 } 114 } 115
116 if (connection != null) { 117 try { 118 connection.close(); 119 } catch (SQLException e) { 120 e.printStackTrace(); 121 } 122 } 123
124 } 125
126 @Test 127 public void testGetConnection2() throws Exception { 128
129 Connection connection = getConnection(); 130
131 System.out.println(connection); 132 } 133
134 public Connection getConnection() throws IOException, ClassNotFoundException, SQLException { 135 // 0. 讀取 jdbc.properties
136 /**
137 * 1). 屬性文件對應 Java 中的 Properties 類 138 * 2). 可以使用類加載器加載 bin 目錄(類路徑下)的文件 139 */
140 Properties properties = new Properties(); 141 InputStream inStream = ReviewTest.class.getClassLoader().getResourceAsStream("jdbc.properties"); 142 properties.load(inStream); 143
144 // 1. 准備獲取連接的 4 個字符串: user, password, jdbcUrl, driverClass
145 String user = properties.getProperty("user"); 146 String password = properties.getProperty("password"); 147 String jdbcUrl = properties.getProperty("jdbcUrl"); 148 String driverClass = properties.getProperty("driverClass"); 149
150 // 2. 加載驅動: Class.forName(driverClass)
151 Class.forName(driverClass); 152
153 // 3. 調用 154 // DriverManager.getConnection(jdbcUrl, user, password) 155 // 獲取數據庫連接
156 Connection connection = DriverManager.getConnection(jdbcUrl, user, password); 157 return connection; 158 } 159
160 /**
161 * Connection 代表應用程序和數據庫的一個連接. 162 * 163 * @throws Exception 164 * 165 */
166 @Test 167 public void testGetConnection() throws Exception { 168 // 1. 准備獲取連接的 4 個字符串: user, password, jdbcUrl, driverClass
169 String user = "root"; 170 String password = "1230"; 171 String jdbcUrl = "jdbc:mysql:///atguigu"; 172 String driverClass = "com.mysql.jdbc.Driver"; 173
174 // 2. 加載驅動: Class.forName(driverClass)
175 Class.forName(driverClass); 176
177 // 3. 調用 178 // DriverManager.getConnection(jdbcUrl, user, password) 179 // 獲取數據庫連接
180 Connection connection = DriverManager.getConnection(jdbcUrl, user, password); 181
182 System.out.println(connection); 183 } 184
185 }
其中jdbc.properties在類路徑下,需要自己配置
十一、總結
java.sql.DriverManager用來裝載驅動程序,獲取數據庫連接。
java.sql.Connection完成對某一指定數據庫的聯接
java.sql.Statement在一個給定的連接中作為SQL執行聲明的容器,他包含了兩個重要的子類型,我在以后的博文中或詳細介紹。 ①Java.sql.PreparedSatement 用於執行預編譯的sql聲明
②Java.sql.CallableStatement用於執行數據庫中存儲過程的調用
java.sql.ResultSet對於給定聲明取得結果的途徑
如果,您對我的這篇博文有什么疑問,歡迎評論區留言,大家互相討論學習。
如果,您認為閱讀這篇博客讓您有些收獲,不妨點擊一下右下角的【推薦】。
如果,您希望更容易地發現我的新博客,不妨點擊一下左下角的【關注我】。
如果,您對我的博文感興趣,可以關注我的后續博客,我是【AlbertRui】。轉載請注明出處和鏈接地址,歡迎轉載,謝謝!