1. 程式人生 > >JDBC中常用物件介紹

JDBC中常用物件介紹

JDBC中的主要類(介面)

在JDBC中常用的類有:

1、DriverManager

2、Connection

3、Statement

4、ResultSet

1、DriverManager

其實我們今後只需要會用DriverManager的getConnection( )方法即可:

1. Class.forName(“com.mysql.jdbc.Driver”);//註冊驅動

2. String url = “jdbc:mysq  l://localhost:3306/mydb1”;

3. String username = “root”;

4. String password = “123”;

5. Connection con = DriverManager.getConnection(url, username,password);

注意,上面程式碼可能出現的兩種異常:

1.  ClassNotFoundException:這個異常是在第1句上出現的,出現這個異常有兩個可能:

沒有給出mysql的jar包;

把類名稱打錯了,檢視類名是不是com.mysql.jdbc.Driver。

2. SQLException:這個異常出現在第5句,出現這個異常就是三個引數的問題,往往username和password一般不是出錯,所以需要認真檢視url是否打錯。

對於DriverManager.registerDriver()方法瞭解即可,因為我們今後註冊驅動只會Class.forName(),而不會使用這個方法。

2、Connection

Connection最為重要的方法就是獲取Statement:

Statement stmt = con.createStatement();

後面在學習ResultSet方法時,還要學習一下下面的方法:

Statement stmt = con.createStatement(int,int );

3、Statement

Statement最為重要的方法是:

執行更新操作,即執行insert、update、delete語句,其實這個方法也可以執行create table、alter table,以及drop table等語句,但我們很少會使用JDBC來執行這些語句;

(2) ResultSetexecuteQuery(String sql):執行查詢操作,執行查詢操作會返回ResultSet,即結果集。

(3) booleanexecute ( )           (瞭解即可)

Statement還有一個boolean execute()方法,這個方法可以用來執行增、刪、改、查所有SQL語句。

該方法返回的是boolean型別,表示SQL語句是否有結果集!。

如果使用execute()方法執行的是更新語句,那麼還要呼叫int getUpdateCount()來獲取insert、update、delete語句所影響的行數。

如果使用execute()方法執行的是查詢語句,那麼還要呼叫ResultSet getResultSet()來獲取select語句的查詢結果。

4、ResultSet之滾動結果集(瞭解)

下一行:預設只能使用它,其他的方法存在,但不能使用!預設的結果集不可滾動!

上一行

下N行

上N行

到N行!

ResultSet表示結果集,它是一個二維的表格!ResultSet內部維護一個行游標(遊標),ResultSet提供了一系列的方法來移動遊標

void beforeFirst():把游標放到第一行的前面,這也是游標預設的位置;

void afterLast():把游標放到最後一行的後面;

boolean first():把游標放到第一行的位置上,返回值表示調控游標是否成功;

boolean last():把游標放到最後一行的位置上;

boolean isBeforeFirst():當前游標位置是否在第一行前面;

boolean isAfterLast():當前游標位置是否在最後一行的後面;

boolean isFirst():當前游標位置是否在第一行上;

boolean isLast():當前游標位置是否在最後一行上;

boolean previous():把游標向上挪一行;

boolean next():把游標向下挪一行;

boolean relative(int row):相對位移,當row為正數時,表示向下移動row行,為負數時表示向上移動row行;

boolean absolute(int row):絕對位移,把游標移動到指定的行上;

int getRow():返回當前游標所有行。

獲取結果集元資料!

得到元資料:rs.getMetaData( ),返回值為ResultSetMetaData;

獲取結果集列數:int getColumnCount( )

獲取指定列的列名:String getColumnName(int colIndex)

結果集特性:當使用Connection的createStatement時,已經確定了Statement生成的結果集是什麼特性。

是否可滾動、是否敏感、是否可更新

con.createSttement():生成的結果集:不滾動、不敏感、不可更新!

con.createStatement(int,int):

第一個引數:

l  ResultSet.TYPE_FORWARD_ONLY:不滾動結果集;

l  ResultSet.TYPE_SCROLL_INSENSITIVE:滾動結果集,但結果集資料不會再跟隨資料庫而變化;

第二個引數:

CONCUR_READ_ONLY:結果集是隻讀的,不能通過修改結果集而反向影響資料庫;

l  CONCUR_UPDATABLE:結果集是可更新的,對結果集的更新可以反向影響資料庫。

上面方法分為兩類,一類用來判斷遊標位置的,另一類是用來移動遊標的。

如果結果集是不可滾動的,那麼只能使用next()方法來移動遊標,而beforeFirst()、afterLast()、first()、last()、previous()、relative()方法都不能使用!!!

結果集是否支援滾動,要從Connection類的createStatement()方法說起。也就是說建立的Statement決定了使用Statement建立的ResultSet是否支援滾動。

resultSetType的可選值:

ResultSet.TYPE_FORWARD_ONLY:不滾動結果集;

ResultSet.TYPE_SCROLL_INSENSITIVE:滾動結果集,但結果集資料不會再跟隨資料庫而變化;

可以看出,如果想使用滾動的結果集,我們應該選擇TYPE_SCROLL_INSENSITIVE!其實很少有資料庫驅動會支援TYPE_SCROLL_SENSITIVE的特性!通常我們也不需要查詢到的結果集再受到資料庫變化的影響。

resultSetConcurrency的可選值:

CONCUR_READ_ONLY:結果集是隻讀的,不能通過修改結果集而反向影響資料庫;

CONCUR_UPDATABLE:結果集是可更新的,對結果集的更新可以反向影響資料庫。

通常可更新結果集這一“高階特性”我們也是不需要的!

獲取滾動結果集的程式碼如下:

Connection con= …

Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,CONCUR_READ_ONLY);

String sql = …//查詢語句

ResultSet rs =stmt.executeQuery(sql);//這個結果集是可滾動的

5、ResultSet之獲取列資料

可以通過next()方法使ResultSet的遊標向下移動,當遊標移動到你需要的行時,就需要來獲取該行的資料了,ResultSet提供了一系列的獲取列資料的方法:

String getString(int columnIndex)獲取指定列的String型別資料;

int getInt(int columnIndex):獲取指定列的int型別資料;

double getDouble(int columnIndex):獲取指定列的double型別資料;

boolean getBoolean(int columnIndex):獲取指定列的boolean型別資料;

Object getObject(int columnIndex)獲取指定列的Object型別的資料。

上面方法中,引數columnIndex表示列的索引,列索引從1開始,而不是0,這第一點與陣列不同。如果你清楚當前列的資料型別,那麼可以使用getInt()之類的方法來獲取,如果你不清楚列的型別,那麼你應該使用getObject()方法來獲取。

ResultSet還提供了一套通過列名稱來獲取列資料的方法:

String getString(String columnName):獲取名稱為columnName的列的String資料;

int getInt(String columnName):獲取名稱為columnName的列的int資料;

double getDouble(String columnName):獲取名稱為columnName的列的double資料;

boolean getBoolean(String columnName):獲取名稱為columnName的列的boolean資料;

Object getObject(String columnName):獲取名稱為columnName的列的Object資料;

關於JDBC的使用詳解請檢視      JDBC操作詳解


相關推薦

JDBC常用物件介紹

JDBC中的主要類(介面)在JDBC中常用的類有:1、DriverManager2、Connection3、Statement4、ResultSet1、DriverManager其實我們今後只需要會用D

jdbcPreparedStatement物件的幾個常用方法

很久沒有用過JDBC了,有些方法就想當然的使用了,也沒有細究,結果就是出錯出錯出錯!所以還是得看API! 不多說,羅列出PreparedStatement物件在初級開發中幾個常用的方法: 1).

String常用方法介紹

本章介紹一些字串中的常用方法,直接看程式碼註釋 public class Test1 { public static void main(String[] args) { String str1 = "abcDRef";

【Kettle從零開始】第五彈之Kettle轉換常用元件介紹

Kettle版本:3.2GA JDK版本:1.6.0_41 OS:NT 由於元件涉及非常多,我這就只舉例幾個常用的元件來進行介紹。需要了解全部元件下載 本彈給大家詳細說明的元件:表輸入、獲取系統資訊

iOS開發之網路程式設計--1、AFNetwork 3.x 的所有開發常用基礎介紹

前言:第三方網路請求框架中AFNetwork 3.x收歡迎程度相當高的: 由於iOS 7 和 Mac OS X 10.9 Mavericks 中一個顯著的變化就是對 Foundation URL 載入系統的徹底重構。而且現在AFN 3.x版本 完全摒棄了NSURLConnection,而使用了NSURL

C#的Dictionary字典類常用方法介紹

remove span one style pre 獲取 all str 常用方法 1 using System.Collections.Generic;//引用命名空間//Dictionary可以理解為散列集合 2 public class DictionaryTe

轉載 SQL Server常用全局變量介紹

lang select 兩種 正在 操作 tempdb gid ive 作用範圍 變量 Transact-SQL語言中有兩種形式的變量,一種是用戶自己定義的局部變量,另外一種是系統提供的全局變量。局部變量 局部變量是一個能夠擁有特定數據類型的對象,它的作用範圍僅限制在程序內

機器學習之numpy庫常用的函數介紹(一)

做的 string idt 維度 數據 round float 數值 array 1. mat() mat()與array的區別: mat是矩陣,數據必須是2維的,是array的子集,包含array的所有特性,所做的運算都是針對矩陣來進行的。 array是數組,數據可以是多

JDBC重要的類/接口-Connection、DriverManager、ResultSet、Statement及常用方法

prepare 獲取 ger 常用方法 命名 lose 參數設置 語言 查詢 DriverManager(管理一組 JDBC 驅動程序的基本服務) 它的方法: getConnection(String url, String user, String passwor

JavaScript常用變量介紹

meta def set 變量介紹 特殊 一次 常用 true 賦值 JavaScript聲明變量 JavaScript變量是來保存我們的數據的,想在JavaScrip中聲明一個變量可以通過以下方式: (1)通過var關鍵字聲明變量(2)可以聲明變量的同時給變量賦值(3)可

Es6Map物件和Set物件介紹及應用

map和set的方法,工作中有使用到,所以學習一下:   Map 物件 Map 物件儲存鍵值對。任何值(物件或者原始值) 都可以作為一個鍵或一個值。 var myMap = new Map(); myMap.set("bar", "baz"); myMap.set(1, "foo"

python爬蟲系列(1.1-urllib常用方法的介紹)

一、關於urllib中常用方法的介紹 1、urlopen網路請求 urlopen方法是網路請求的方法,預設是get請求,如果傳遞了data是post請求 from urllib import request  

SpringBoot,Spring 常用註解@RequestMapping/@GetMapping/@PostMapping /@PutMapping/@DeleteMapping介紹

1、@Controller @Controller 用來響應頁面,表示當前的類為控制器。 2、@RestController @RestController 是@ResponseBody和@Controller的結合 表明當前類是控制器且返回的是一

js:Array物件常用方法介紹

前言 在js中,陣列作為一個特殊的物件。是我們常用的資料格式。今天就來梳理一下常用的陣列方法. 1.基礎 幾種基礎的就簡單介紹一下:建立陣列 var arr1 = new Array(); //括號可以傳參,指定陣列長度。目前arr1.length是0 var arr2 = new Array(3)

JavaScript引用型別Math物件相關介紹

Math物件在實際應用中作用感覺得到,當然引用型別的這些方法不可能去一一列舉出來我們只有邊用邊記憶才比較好,那麼小編這邊相當於是給自己做上一個筆記,介紹一些Math中自己覺得用得上的方法。 ·我們這樣去理解math方法,實際用法上他不像Array類那樣要去先建立一個物件在對物件應用相關方法,更多

jsObject物件常用方法和屬性

1、屬性 Object.prototype.writable:預設為false Object.prototype.enumerable:預設為false Object.prototype.configurable:預設為false Object.prototype.constructor:用

JSString物件常用方法

1、charCodeAt方法返回一個整數,代表指定位置字元的Unicode編碼。 strObj.charCodeAt(index) 說明: index將被處理字元的從零開始計數的編號。有效值為0到字串長度減1的數字。 如果指定位置沒有字元,將返回NaN。 例如: var str = “ABC

DjangoQuerySet物件(模型.objects)的常用方法

準備工作: 新建一個專案,在專案中新家一個app,名字自取。將app新增值settings.py中,然後配置settings連線資料庫。 在app中的models中新建模型: from django.db import models # Create your models h

JSString物件常用方法

1.chatAt():返回在指定位置的字元 用法:str.charAt(index) str為字串、index為索引 2.charCodeAt():返回在指定位置的字元的Unicode編碼 用法:str.charCodeAt(index):str為字串、index為索引 3.conc

JDBC使用Preparement物件修改個人多賬戶密碼

  在日常生活中,人們可能會遇到想同時修改自己所有賬戶的密碼,這個時候再用批量處理已經不好使了,因為我們要處理的是某個人的多個賬戶,而不是所有人的,那麼怎麼才能實現呢?經過大量的測試,我寫了一個單元測試程式碼來實現這個想法。看下面的words. 修改前的對照表 下面我們來修改一下其中兩個賬戶的密碼