JDBC主要API學習總結


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 }
View Code

  其中jdbc.properties在類路徑下,需要自己配置

十一、總結

  java.sql.DriverManager用來裝載驅動程序,獲取數據庫連接。

  java.sql.Connection完成對某一指定數據庫的聯接

  java.sql.Statement在一個給定的連接中作為SQL執行聲明的容器,他包含了兩個重要的子類型,我在以后的博文中或詳細介紹。     ①Java.sql.PreparedSatement 用於執行預編譯的sql聲明
  ②Java.sql.CallableStatement用於執行數據庫中存儲過程的調用

  java.sql.ResultSet對於給定聲明取得結果的途徑

 

如果,您對我的這篇博文有什么疑問,歡迎評論區留言,大家互相討論學習。
如果,您認為閱讀這篇博客讓您有些收獲,不妨點擊一下右下角的【推薦】。
如果,您希望更容易地發現我的新博客,不妨點擊一下左下角的【關注我】。
如果,您對我的博文感興趣,可以關注我的后續博客,我是【AlbertRui】。

轉載請注明出處和鏈接地址,歡迎轉載,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM