狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

JDBC 基礎

JDBC 基礎

更新時間:2024-04-11 文章作者:未知 信息來源:網絡 閱讀次數:

JDBC 入門 -- 建立聯接
教程:JDBC 入門 作者:Maydene Fisher 翻譯:comer
  你需要做的第一事情是你與想要使用的 DBMS 建立一個連接。這包含 2 個步驟:裝載驅動程序并建立連接。

裝載驅動程序
  裝載驅動程序只需要非常簡單的一行代碼。例如,你想要使用 JDBC-ODBC 橋驅動程序, 可以用下列代碼裝載它:

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  你的驅動程序文檔將告訴你應該使用的類名。例如, 如果類名是 jdbc.DriverXYZ ,你將用代碼以下的代碼裝載驅動程序:

    Class.forName("jdbc.DriverXYZ");

  你不需要創建一個驅動程序類的實例并且用 DriverManager 登記它,因為調用 Class.forName 將自動將加載驅動程序類。如果你曾自己創建實例,你將創建一個不必要的副本,但它不會帶來什么壞處。

  加載 Driver 類后,它們即可用來與數據庫建立連接。

建立連接
  第二步就是用適當的驅動程序類與 DBMS 建立一個連接。下列代碼是一般的做法:

    Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");

  這個步驟也非常簡單,最難的是怎么提供 url。如果你正在使用 JDBC-ODBC 橋, JDBC URL 將以 jdbc:odbc 開始:余下 URL 通常是你的數據源名字或數據庫系統。因此,假設你正在使用 ODBC 存取一個叫 "Fred" 的 ODBC 數據源,你的 JDBC URL 是 jdbc:odbc:Fred 。把 "myLogin" 及 "myPassword" 替換為你登陸 DBMS 的用戶名及口令。如果你登陸數據庫系統的用戶名為 "Fernanda" 口令為 "J8",只需下面的 2 行代碼就可以建立一個連接:

String url = "jdbc:odbc:Fred";
Connection con = DriverManager.getConnection(url,"Fernanda", "J8");
  如果你使用的是第三方開發了的 JDBC驅動程序,文檔將告訴你該使用什么 subprotocol, 就是在 JDBC URL 中放在 jdbc 后面的部分。例如, 如果驅動程序開發者注冊了 acme 作為 subprotocol, JDBC URL 的第一和第二部分將是 jdbc:acme。驅動程序文檔也會告訴你余下 JDBC URL 的格式。JDBC URL 最后一部分提供了定位數據庫的信息。

  如果你裝載的驅動程序識別了提供給 DriverManager.getConnection 的 JDBC URL ,那個驅動程序將根據 JDBC URL 建立一個到指定 DBMS 的連接。正如名稱所示,DriverManager 類在幕后為你管理建立連接的所有細節。除非你是正在寫驅動程序,你可能無需使用此類的其它任何方法,一般程序員需要在此類中直接使用的唯一方法是 DriverManager.getConnection。

  DriverManager.getConnection 方法返回一個打開的連接,你可以使用此連接創建 JDBC statements 并發送 SQL 語句到數據庫。在前面的例子里,con 對象是一個打開的連接,并且我們要在以后的例子里使用它。

JDBC 入門 -- 設置表
創建表
  首先,我們在我們的示例數據庫創建其中一張表 COFFEES,包含在咖啡店所賣咖啡的必要的信息,包括咖啡名字,他們的價格,本星期賣了多少磅及迄今為止賣的數目。關于 COFFEES 表我們以后會詳細描述,如下:

COF_NAME SUP_ID PRICE SALES TOTAL
Colombian 101 7.99 0 0
French_Roast 49 8.99 0 0
Espresso 150 9.99 0 0
Colombian_Decaf 101 8.99 0 0
French_Roast_Decaf 49 9.99 0 0

  存儲咖啡名的列是 COF_NAME,它的 SQL 數據類型是 VARCHAR,最大的長度為 32 個字符。因為我們所賣的每種類型咖啡都使用不同的名字,名字可用于作為唯一識別咖啡的標識,因此可用于作主鍵。第二個列叫 SUP_ID,用于保存咖啡供應商標識;其 SQL 數據類型為 INTEGER。第 3 列叫 PRICE,因為它需要保存帶小數的十進制數,因此它的 SQL 類型為 FLOAT。(注意,通常錢的 SQL 類型為 DECIMAL 或 NUMERIC,但在不同 DBMSs 間存在差異,為了避免于老版本的 JDBC 的不兼容性在本教程我們采用更標準的 FLOAT 類型)SALES 列的 SQL 類型為 INTEGER,其值為本星期所賣咖啡的磅數。最后一列,TOTAL 的 SQL 類型為 INTEGER,保存了迄今為止所賣咖啡的總磅數。

  數據庫里的第二個表 SUPPLIERS,保存了每個供應商的信息:

SUP_ID SUP_NAME STREET CITY STATE ZIP
101 Acme, Inc. 99 Market Street Groundsville CA 95199
49 Superior Coffee 1 Party Place Mendocino CA 95460
150 The High Ground 100 Coffee Lane Meadows CA 93966

  COFFEES 跟 SUPPLIERS 都包含列 SUP_ID,它意味著可以用 SELECT 語句從這兩張表中取得有關信息。列 SUP_ID 是 SUPPLIERS 表的主鍵,用于唯一識別每個咖啡供應商。在 COFFEES 表中,SUP_ID 列被稱外鍵。注意每個 SUP_ID 值在 SUPPLIERS 表里只出現一次;這對主鍵是必須的。在 COFFEES 表里,它作為外鍵,顯然它可以有重復的 SUP_ID 值,因為同一供應商可以提供很多種的咖啡。在本節的最后,你將看見如何在 SELECT 語句中使用主鍵及外鍵的一個例子。

  下面的 SQL 語句用于創建 COFFEES 表。列由列名跟空格跟 SQL 類型組成。列(包括列名及其 SQL 類型)跟下一個之間用逗號分隔。VARCHAR 類型創建定義了最大長度, 因此它需要有一個參數來表示最大長度。參數必須在類型后面的括號內。SQL 語句如下,列 COF_NAME 的長度 被限定為不得超過 32 個字符:

CREATE TABLE COFFEES
(COF_NAME VARCHAR(32),
SUP_ID INTEGER,
PRICE FLOAT,
SALES INTEGER,
TOTAL INTEGER)

  這些代碼不帶 DBMS 語句結束符, 因為每個 DBMS 都可能不同。例如, Oracle 使用一個分號 (;) 作為語句的結束,而 Sybase 使用 go。你所使用的驅動程序會自動提供合適的語句結束符,因此你無須把它包括在你的 JDBC 代碼中。

  另外,我們應該指出的的是 SQL 語句的格式。在 CREATE TABLE 語句中,關鍵字采用大寫字符,并且每個項目都另起一行。SQL 并沒有此要求;僅僅是為了更容易閱讀。SQL 標準是不區分關鍵詞的大小寫的, 因此,如下例中的 SELECT 語句可以有多種寫法。因此下面兩個不同寫法的語句對 SQL 來說是一樣的。

SELECT First_Name, Last_Name
FROM Employees
WHERE Last_Name LIKE "Washington"

select First_Name, Last_Name from Employees where
Last_Name like "Washington"

  然而,引號里的內容是區分大小寫的:在名字"Washington" 里 "W" 必須被大寫,并且余下的字符必須是小寫的。

  對于標識,不同的 DBMS 有不同的要求,例如, 某些 DBMSs 要求那些列名及表名必須跟創建時的一樣,有些則沒有此要求。為安全起見,我們全部使用大寫標識如 COFFEES、SUPPLIERS,因為我們是那樣定義他們的。

  到止我們寫了創建 COFFEES 表的 SQL 語句。現在我們在它外面加上引號(使它成為字符串),并且字符串賦值給變量 createTableCoffees,在以后的 JDBC 代碼中我們可以使用此變量。正如看到的,DBMS 并不在意分行,但對 Java 語言來,String 對象分行是通不過編譯的。因而,我們可以用加號 (+) 把每一行的串連接。

String createTableCoffees = "CREATE TABLE COFFEES " +
"(COF_NAME VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT, " +
"SALES INTEGER, TOTAL INTEGER)";

  我們在 CREATE TABLE 語句中使用的數據類型是通用的 SQL 類型(也稱 JDBC 類型)它們在類 java.sql.Types 中定義。DBMSs 通常使用這些標準的類型,因此,當你要嘗試一些 JDBC 應用程序時,你可以直接使用 CreateCoffees.java 應用程序,它使用了 CREATE TABLE 語句。如果你的 DBMS 使用了它的自己的本地的類型名字,我們為你供應其它的應用程序,我們將在后面詳細解釋。

  在運用任何應用程序前,當然,我們將讓你了解 JDBC 的基礎。

創建 JDBC Statements 對象
  Statement 對象用于把 SQL 語句發送到 DBMS 。你只須簡單地創建一個 Statement 對象并且然后執行它,使用適當的方法執行你發送的 SQL 語句。對 SELECT 語句來說,可以使用 executeQuery。要創建或修改表的語句,使用的方法是 executeUpdate。

  需要一個活躍的連接的來創建 Statement 對象的實例。在下面的例子中,我們使用我們的 Connection 對象 con 創建 Statement 對象 stmt:

Statement stmt = con.createStatement();

  到此 stmt 已經存在了,但它還沒有把 SQL 語句傳遞到 DBMS。我們需要提供 SQL 語句作為參數提供給我們使用的 Statement 的方法。例如,在下面的代碼段里,我們使用上面例子中的 SQL 語句作為 executeUpdate 的參數:

stmt.executeUpdate("CREATE TABLE COFFEES " +
"(COF_NAME VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT, " +
"SALES INTEGER, TOTAL INTEGER)");

  因為我們已經把 SQL 語句賦給了 createTableCoffees 變量,我們可以如下方式書寫代碼:

stmt.executeUpdate(createTableCoffees);

執行語句
  我們使用 executeUpdate 方法是因為在 createTableCoffees 中的 SQL 語句是 DDL (數據定義語言)語句。創建表,改變表,刪除表都是 DDL 語句的例子,要用 executeUpdate 方法來執行。你也可以從它的名字里看出,方法 executeUpdate 也被用于執行更新表 SQL 語句。實際上,相對于創建表來說,executeUpdate 用于更新表的時間更多,因為表只需要創建一次,但經常被更新。

  被使用最多的執行 SQL 語句的方法是 executeQuery。這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句。馬上你將看到如何使用這個方法。

在表中輸入數據
  我們已經顯示了如何通過指定列名、數據類型來創建表 COFFEES,但是這僅僅建立表的結構。表還沒有任何數據。我們將次輸入一行數據到表中,提供每列的信息,注意插入的數據顯示順序跟表創建時候是一樣的,既缺省順序。

  下列代碼插入一個行數據,COF_NAME 的值為 Colombian,SUP_ID 為 101,PRICE 為 7.99,SALES 0,TOTAL 0。就象創建 COFFEES 表一樣,我們創建一 Statement 對象,并執行 executeUpdate 方法。

  因為 SQL 語句一行顯示不下,因此我們把它分為兩行,并用加號 (+) 相連。特別要注意的是,在 COFFEES 和 VALUES 之間要有空格。這個空格必須在引號之內并且要在 COFFEES 跟 VALUES 之間;沒有這個空格,SQL 語句將被錯誤地被讀作為 "INSERT INTO COFFEESVALUES ...",并且 DBMS 將尋找表 COFFEESVALUES。還要注意的是在 coffee name 上我們使用了單引號。

Statement stmt = con.createStatement();
stmt.executeUpdate(
"INSERT INTO COFFEES " +
"VALUES ('Colombian', 101, 7.99, 0, 0)");

  下面的代碼把第二行插入到表 COFFEES 中。我們可以在使用 Statement 對象而無須為每次執行創建一個新的。

stmt.executeUpdate("INSERT INTO COFFEES " +
"VALUES ('French_Roast', 49, 8.99, 0, 0)");

  剩下行的數據如下:

stmt.executeUpdate("INSERT INTO COFFEES " +
"VALUES ('Espresso', 150, 9.99, 0, 0)");
stmt.executeUpdate("INSERT INTO COFFEES " +
"VALUES ('Colombian_Decaf', 101, 8.99, 0, 0)");
stmt.executeUpdate("INSERT INTO COFFEES " +
"VALUES ('French_Roast_Decaf', 49, 9.99, 0, 0)");

從表中取得數據
  既然表 COFFEES 中已經有數據了,我們就可以寫一個 SELECT 語句來取得這些值。下面的 SQL 語句中星號 (*) 表示選擇所有的列。因為沒有用 WHERE 子句來限制所選的行,因此下面的 SQL 語句選擇的是整個表。

SELECT * FROM COFFEES

  結果是整個表的數據,如下:

COF_NAME SUP_ID PRICE SALES TOTAL
--------------- ------ ----- ----- -----
Colombian 101 7.99 0 0
French_Roast 49 8.99 0 0
Espresso 150 9.99 0 0
Colombian_Decaf 101 8.99 0 0
French_Roast_Decaf 49 9.99 0 0

  如果你直接在數據庫系統里輸入 SQL 查詢語句,你將在你的終端上看到如上的結果。當我們通過一個 Java 應用程序存取一個數據庫時,正如我們馬上要做的一樣,我們需要檢索結果以便我們能使用他們。你將在下一節看到如何實現。

這是 SELECT 語句的另一個例子,這將得到咖啡及其各自每磅單價的列表。

SELECT COF_NAME, PRICE FROM COFFEES

查詢的結果集將具有如下形式:

COF_NAME PRICE
-------- ---------- -----
Colombian 7.99
French_Roast 8.99
Espresso 9.99
Colombian_Decaf 8.99
French_Roast_Decaf 9.99

上面 SELECT 語句取得了所有咖啡的名字及價格。而下面的 SELECT 語句限制那些每磅價格低于 $9.00 的咖啡才被選擇。
SELECT COF_NAME, PRICE
FROM COFFEES
WHERE PRICE < 9.00

結果集將具有如下形式:

COF_NAME PRICE
-------- ------- -----
Colombian 7.99
French_Roast 8.99
Colombian Decaf 8.99

JDBC 入門 -- 開始
你需要做的第一事情是你要正確的安裝。這包含下列幾個步驟:

在你的計算機上安裝 Java 和 JDBC
  Java 數據庫連接 (JDBC) 是一個標準 SQL(Structured Query Language,結構化查詢語言)數據庫訪問接口, 可以為多種關系數據庫提供統一訪問。JDBC(Java DataBase Connection,Java 數據庫連接) 也提供一種基準,據此可以構建更高級的工具和接口。 目前的 JDK(Java Development Kit,Java 開發工具包)軟件捆綁包括 JDBC 和 JDBC-ODBC(Open DataBase Connection,開放式數據庫連接)橋。這些包也可獨立得到,以跟 JDK 1.0 一起使用。應該注意的是,本文的示例使用了 JDBC 2.0 接口,需要 JDK 2.0 來運行,不能在 JDK 1.1 下運行。

  你可以從 http://java.sun.com/products/JDK/CurrentRelease 找到最新版。

安裝驅動程序
  你的驅動程序應該有安裝方法。為特定的 DBMSs 寫的 JDBC 驅動程序安裝時只要拷貝到你的計算機上就可以了。并不需要特殊的配置。

  如果你下載的是 Solaris 或 Windows JDK1.1 版本,橋作為包 sun.jdbc.odbc 與 JDK 一起自動安裝。有關安裝和配置 ODBC 的信息,請咨詢 ODBC 驅動程序廠商。橋無須特殊配置。有關客戶機安裝和配置信息,請咨詢數據庫廠商。

如果需要,安裝數據庫系統
  如果你不能確認是否安裝了數據庫系統,你需要按照供應商的要求安裝數據庫。大多數用戶都已經安裝了數據庫,可繼續使用他們安裝好的數據庫。

配置數據庫
  我們假設數據庫 COFFEEBREAK 已經存在。(創建一個數據庫并不困難,但需要一定的權限并通常是由數據庫管理員來做)你還需要在此數據庫里創建本教程作為例子使用的表。我們有意限制表的大小跟及數目,以便于管理。

  假設我們的數據庫是在一個咖啡館里使用, 咖啡豆按磅賣,而咖啡則以杯為單位。為了簡單起見,還假定經營者只需要 2 張表,分別存放不同種類的咖啡及咖啡供應商的有關信息。

  首先我們演示怎么打開一個 DBMS 連接, 及 JDBC 是怎么發送 SQL 語句到你的 DBMS。通過這些代碼,我們將表明使用 JDBC 傳遞 SQL 語句到你的 DBMS 并處理返回的結果是非常簡單的。

  所有的代碼在主要的幾個 DBMS 產品做了測試。然而, 如果你使用 JDBC-ODBC 橋來連接舊版本 ODBC 驅動程序時,可能會遇到一些兼容性問題。 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
99视频在线精品| 99v久久综合狠狠综合久久| 亚洲激情午夜| 久久精品无码一区二区三区| 国产一区视频网站| 欧洲一区二区av| 日韩av中文字幕一区二区| 国产精品免费一区二区三区观看| 国产精品视频在线看| 97se亚洲国产综合自在线不卡 | 欧美精品激情| 久久理论电影网| av一二三不卡影片| 精品国产制服丝袜高跟| 福利一区在线观看| 精品国产三级电影在线观看| 国产成人夜色高潮福利影视| 欧美一二三区在线| 国产精品一二三| 日韩欧美国产一区在线观看| 粉嫩欧美一区二区三区高清影视 | 4438x成人网最大色成网站| 国产中文一区二区三区| 555夜色666亚洲国产免| 国产精品一二三四| 日韩欧美国产三级| 97久久超碰精品国产| 欧美国产精品中文字幕| 欧美午夜免费| 艳妇臀荡乳欲伦亚洲一区| 久久av免费一区| 日韩av电影免费观看高清完整版在线观看| 久色成人在线| 精品一区二区在线免费观看| 91精品国产综合久久婷婷香蕉| 成人免费高清视频在线观看| 精品电影一区二区三区| 国产精品国码视频| 又紧又大又爽精品一区二区| 久久一区国产| 国产一区二区毛片| 久久一区二区三区四区| 亚洲无线观看| 亚洲妇女屁股眼交7| 欧洲视频一区二区| 国产成人午夜片在线观看高清观看| 精品国产自在久精品国产| 亚洲一二区在线| 欧美日韩一区二区三区视频| 亚洲欧美精品午睡沙发| 六月婷婷一区| 国产成人自拍高清视频在线免费播放| 欧美精品一区二区精品网| 红杏aⅴ成人免费视频| 天堂成人免费av电影一区| 91精品国产综合久久国产大片| 91年精品国产| 亚洲不卡一区二区三区| 91麻豆精品国产自产在线观看一区| 99久久99久久久精品齐齐| 亚洲伦在线观看| 欧美日韩不卡一区| 欧美日韩一区自拍| 日韩综合小视频| 久久综合网色—综合色88| 国产欧美亚洲日本| 国产一区在线看| 1区2区3区国产精品| 欧洲色大大久久| 欧美日韩一区二区三区四区在线观看 | 国产永久精品大片wwwapp| 国产日韩视频一区二区三区| 久久精品99| 北条麻妃国产九九精品视频| 一区二区免费看| 日韩欧美视频在线| 亚洲欧美日本日韩| 国产91精品一区二区麻豆网站| 亚洲激情第一区| 欧美成人一区二区三区片免费| 一区二区三区国产在线| 国产黄色91视频| 亚洲国产精品久久不卡毛片| 精品国精品国产| 色婷婷久久久综合中文字幕| 欧美精品午夜| 国产精品自在在线| 亚洲最大的成人av| 久久久久国产一区二区三区四区| 老司机免费视频久久| 国产精品国产亚洲精品看不卡15| 久久精品av麻豆的观看方式| 一区二区三区四区亚洲| 久久综合九色综合97婷婷| 在线精品国精品国产尤物884a| 国产综合18久久久久久| 国产东北露脸精品视频| 日韩电影免费在线观看网站| 中文字幕一区二| 久久久一区二区| 欧美日韩久久久久久| 另类天堂av| 亚洲激情影院| 91在线云播放| 国产精品18久久久久久久久久久久 | 337p粉嫩大胆噜噜噜噜噜91av| 欧美性受极品xxxx喷水| 国产精品三区www17con| 欧美视频亚洲视频| 成人一二三区视频| 蜜桃av一区二区| 天天影视涩香欲综合网| 亚洲品质自拍视频| 日本一区二区不卡视频| 欧美tk—视频vk| 欧美一区二区三区成人| 欧美色综合网站| 在线中文字幕不卡| 久久精品一区| 欧美亚洲色图校园春色| 亚洲午夜精品久久久久久浪潮| 欧美在线三级| av亚洲精华国产精华精| 成人一区在线看| 国产一区二区毛片| 国产美女主播视频一区| 卡一卡二国产精品| 美女mm1313爽爽久久久蜜臀| 亚洲成在人线免费| 亚洲成人午夜电影| 一区二区三区欧美激情| 亚洲激情欧美激情| 亚洲精品国产精品乱码不99| 亚洲欧美色综合| 樱花影视一区二区| 亚洲在线视频一区| 亚洲主播在线观看| 亚洲福利一区二区三区| 亚洲一区二区欧美| 亚洲二区视频在线| 天天综合天天综合色| 日本成人在线看| 精品一二线国产| 国产一区二区视频在线播放| 国产99久久精品| av电影在线观看完整版一区二区| www.欧美色图| 欧美日韩第一区| 亚洲久久一区| 一本大道久久精品懂色aⅴ| 日本久久精品电影| 欧美精品1区2区3区| 日韩欧美成人一区二区| 国产亚洲精品超碰| 国产精品国产自产拍在线| 亚洲精品va在线观看| 调教+趴+乳夹+国产+精品| 国内精品伊人久久久久av影院| 国产精品一区二区免费不卡| 99视频一区二区| 黄色另类av| 蘑菇福利视频一区播放| 欧美日韩国产精品成人| 欧美精品一区二区三区蜜桃| 国产精品白丝在线| 亚洲va中文字幕| 国产一区二区伦理| 欧美大片专区| 国产精品一国产精品k频道56| 色婷婷综合久久久久中文| 日韩一级欧美一级| 中文字幕不卡一区| 亚洲成av人片www| 狠狠色丁香婷婷综合久久片| 99久久伊人网影院| 一本色道88久久加勒比精品| 久久综合激情| www久久精品| 亚洲综合一区二区三区| 国产一区二区三区日韩| 欧美精选一区| 欧美综合欧美视频| 久久中文字幕电影| 亚洲国产成人高清精品| 国产福利91精品| 亚洲日产国产精品| 欧美美女激情18p| 国产精品久久久久久久久快鸭 | 国产99久久久国产精品潘金| 99热精品在线观看| 91精品国产综合久久香蕉的特点 | 亚洲国产精品一区制服丝袜| 精品视频免费看| 国产精品久久毛片| 精品一区二区三区影院在线午夜| 91麻豆免费看片| 欧美日韩午夜影院| 中文字幕一区二区日韩精品绯色| 精品在线一区二区三区| 影音先锋在线一区|