Java學習筆記--JDBC資料庫的使用

來源:互聯網
上載者:User

標籤:

 

參考  hu_shengyang的專欄 : http://blog.csdn.net/hu_shengyang/article/details/6290029

 

JDBC API中提供的常用資料庫編程的類和介面如下

 

1.Driver 介面:代表驅動程式

2.DriverManager 類:驅動程式管理員

3.Connection 介面:代表資料庫連接

4.Statement 、PreparedStatement、CallableStatement 介面:代表資料庫操作對象

5.ResultSet 介面:代表結果集

6.DatabaseMetadata、ResultSetMetadata介面:代表中繼資料

7.Types 類:代表JDBC類型

 

詳細解釋

2.DriverManager類

  DriverManager類管理一組JDBC驅動程式的基本服務,跟蹤可用的驅動程式,並在資料庫和相應驅動程式之間建立串連,處理諸如驅動程式登入時間限制及登入和跟蹤訊息的顯示等事務。

  首先使用DriverManager類載入磁碟機,使用該類的DriverManager.registerDriver(Driver driver)方法註冊磁碟機。(registerDriver方法是靜態方法,可用類名直接調用)。

  有兩種方法載入磁碟機

 (1)DriverManager.registerDriver(Driver driver),則在DriverManager的驅動程式列可用於建立串連

 (2)通過調用方法Class.forName()顯示載入驅動程式類。由於與外部設定無關,推薦

String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";class.forName(driver);

  常用方法:DriverManager.getConnection(),參數不同,有以下幾種

DriverManager.getConnection(String url);

DriverManager.getConnection(String url, String user , String password); //user為資料庫使用者名稱,password為資料庫密碼

 

3.Connection介面

當調用DriverManager.getConnection方法發出串連請求時,DriverManager將檢查每個驅動程式是否可以建立串連,返回一個Connection資料庫連接對象。

createStatement()方法建立一個State對象來將SQL語句發送到資料庫,不帶參數的SQL語句通常使用Statement對象執行,如果多次執行相同SQL語句,可以使用PreparedStatement方法

  例:Statement stmt = dbConn.createStatement();

 

4.Statement介面

發送SQL語句到資料庫中。

JDBC有3種Statement對象,Statement 、PreparedStatement(繼承自Statement)、CallableStatement(繼承自PreparedStatement)

Statement介面提供了3種執行SQL語句的方法

(1)executeQuery()  用於產生單個結果集語句,如select,返回單個ResuleSet對象

(2)executeUpdate()  執行INSERT,UPDATE,DELETE語句等資料操作語言以及CREATE TABLE和DROP TABLE等資料定義語言 (Data Definition Language)

(3)execute()  執行返回多個結果集、多個更新或者二者組合的語句

 

5.ResultSet介面

包含符合SQL語句中條件的所有行,並且通過一套get方法提供了對這些行中資料的訪問。

ResultSet.next移動到結果的下一行記錄  getXXX()擷取指定列中的資料

 

 

三、JDBC應用程式的基本步驟:

1.註冊驅動

2.建立資料庫連接

3.建立資料庫操作對象

4.執行SQL

5.處理結果集

6.關閉JDBC對象

 

1.註冊一個驅動driver

         註冊驅動程式的三種方式:

         方式一:Class.forName("Oracle.jdbc.driver.OracleDriver");

         方式二:Driver driver=new Oracle.jdbc.driver.OracleDriver();

                   DriverManager.registerDriver(driver);

         方式三:編譯時間在虛擬機器中載入驅動

                   javac -D jdbc.drivers = oracle.jabc.driver.OracleDriver xxx.java

                   java -D jabc.drivers = 驅動全名   類名

                   使用系統屬性名,載入驅動 -D表示為系統屬性賦值

              附:mysql 的Driver全名:com.mysql.jdbc.Driver

                   sqlserver 的Driver全名:com.microsoft.jdbc.sqlserver.SQLServerDriver

2.建立串連     

         conn=DriverManager.getConnection

                   ("jdbc:oracle.thin:@192.168.0.254:1521/test","username","password");

    上面括弧中放的是:oracle自協議[email protected]+ip:port / 資料庫執行個體名,資料庫使用者名稱,使用者密碼。

    mysql url寫法:jdbc:mysql://192.168.254:3306/test

    SQLServer url寫法:jdbc:sqlserver://localhost:1433; DatabaseName=ztest

其他資料的補充(未證實正確性)

  Oracle(thin模式):jdbc:oracle:thin:@localhost:1521:orcl   //orcl為資料庫的SID

  Sybase:jdbc:sybase:Tds:localhost:5007/myDB       //myDB為資料庫名

  DB2: jdbc:db2://localhost:5000/myDB

  MySQL: jdbc:mysql://localhost/myDB?user=soft&password=123&useUnicode=true&characterEncoding=8859_1

3.獲得一個Statement對象

        sta = conn.createStatement();

4.通過Statement執行sql語句

        sta.excuteQuery(sql);//返回一個查詢結果集

        sta.executeUpdate(sql);//傳回值為 int 型,表示影響記錄的條數

        將sql語句通過串連發送到資料庫中執行,以實現對資料庫的操作。

5.處理結果集

        使用Connection對象獲得一個Stagement,Statement中的executeQuery(String sql)方法可以使用select語句查詢,並返回一個結果集 ResultSet 。通過遍曆這個結果集,可以獲得select語句的查詢結果。ResultSet的next()方法會操作一個遊標從第一條記錄開始讀取,直到最後一天記 錄。 executeUpdate(String sql)方法用於執行 DDL /DML 語句,比如update,delete等。

         只有select語句才有返回結果集。

         例:Statement sta = con.createStatement(); //建立statement對象

              String sql = " insert into test(id,name) values(1"+" " " "+"king"+" "" "+") ";

              sta.executeUpdate(sql); //執行sql語句

              String sql = "select * from test";

              ReslutSet rs = sta.executeQuery(sql);//執行sql語句後有結果集

              //遍曆處理結果集

              while(rs.next()){

                   System.out.println(rs.getInt("id"));

                   System.out.println(rs.getString("name"));

              }

6.關閉資料庫連接(釋放資源)

   調用close()方法:

        rs.close();         

        sta.close();          

        conn.close();

        ResultSet 、Statement 和Connetction是依次依賴的。

        注意:要按先 ResultSet ,再Statement,最後Connetction的順序關閉資源。因ResultSet和Statement在串連的情況下才能使用,所以在連使用束 後可能還有其他的statement還在串連,所以不能先關閉Connection。

 

 

======================================

 

舉例

 

在sqlserver內建立資料庫ztest,運行下面的語句

建表:

create table Student(
  sno char(9) PRIMARY KEY,
  sname char(20),
  ssex char(2)
)

插入資料:
insert into Student values(‘1000001‘,‘張一‘,‘m‘);
insert into Student values(‘1000002‘,‘張二‘,‘f‘);
insert into Student values(‘1000003‘,‘張三‘,‘f‘);
insert into Student values(‘1000004‘,‘張四‘,‘f‘);
insert into Student values(‘1000005‘,‘張五‘,‘m‘);
insert into Student values(‘1000006‘,‘張六‘,‘f‘);
insert into Student values(‘1000007‘,‘張七‘,‘m‘);
insert into Student values(‘1000008‘,‘張八‘,‘m‘);

public class Test {public static void main(String[]args) {String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  //載入JDBC驅動String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=ztest";  //串連伺服器和資料庫testString userName = "sa";  //預設使用者名String userPwd ="123";  //密碼Connection dbConn = null;try {Class.forName(driverName);dbConn = DriverManager.getConnection(dbURL, userName, userPwd);System.out.println("Connection Successful!");  //如果串連成功 控制台輸出Connection Successful!} catch (Exception e) {e.printStackTrace();System.out.println("串連失敗...");}try {Statement stmt = dbConn.createStatement();stmt.executeUpdate("insert into Student values(‘22222222‘,‘李四‘,‘m‘);");ResultSet rs = stmt.executeQuery("select * from student");while(rs.next()){System.out.println(rs.getString("sno")+" "+rs.getString("sname")+" "+rs.getString("ssex"));}} catch (SQLException e) {e.printStackTrace();}}}

  

控制台結果

Connection Successful!1000001   張一                 m 1000002   張二                 f 1000003   張三                 f 1000004   張四                 f 1000005   張五                 m 1000006   張六                 f 1000007   張七                 m 1000008   張八                 m 22222222  李四                 m 

 

Java學習筆記--JDBC資料庫的使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.