一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java如何創建一個jdbc程序詳解

java如何創建一個jdbc程序詳解

2021-01-30 12:19YJLAugus Java教程

使用Java程序來操作數據庫,后者更加直接的話就是使用Java程序來發送SQL語句的技術稱之為:JDBC。下面這篇文章主要給大家介紹了關于利用java如何創建一個jdbc程序的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。

JDBC簡介

  • Java數據庫連接(Java Database Connectivity,JDBC),是一種用于執行SQL語句的Java API,它由一組用Java編程語言編寫的類和接口組成。
  • JDBC為數據庫開發人員提供了一個標準的API,使他們能夠用純Java API來編寫數據庫應用程序。
  • 使用JDBC編寫的程序能夠自動地將SQL語句傳送給相應的數據庫管理系統。
  • JDBC擴展了Java的功能,由于Java語言本身的特點,使得JDBC具有簡單、健壯、安全、可移植、獲取方便等優勢。

我們在沒有JDBC之前,使用驅動程序在Java程序與MySQL、Oracle、SQLServer等數據庫之間建立連接,驅動程序就是在該課程中將要學到的內容。那么就存在一個問題:在同一個Java程序與數據庫之間建立連接時,驅動程序是否是共用的呢?如果一樣,很顯然就能節省代碼量,但是實際上是不一樣的。一定要注意是不一樣的。那么就存在一個問題:當底層數據庫發生改變之后,數據庫的驅動程序也會隨之發生變化,那么該怎么解決該問題呢?于是JDBC出現了,目的是為了減輕開發人員的工作量,以提高代碼的復用。

JDBC API

 

接口/類 功能說明
DriverManager 數據庫驅動管理類,用于加載和卸載各種驅動程序,并建立于數據庫的連接
Connection 此接口用于連接數據庫
Statement 此接口用于執行SQL語句并將數據檢索到ResultSet中
ResultSet 結果集接口,提供檢索SQL語句返回數據的各種方法
PreparedStatement 此接口用于執行預編譯的SQL語句
CallableStatement 此接口用于執行SQL存儲過程的語句

 

JDBC結構

1.JDBC API是Java開發工具包(JDK)的組成部份:

  • JDBC驅動程序管理器
  • JDBC驅動程序測試工具包
  • JDBC-ODBC橋

2.JDBC驅動程序管理器是JDBC體系結構的支柱,其主要作用是把Java應用程序連接到正確的JDBC驅動程序上。

3.JDBC驅動程序測試工具包為JDBC驅動程序的運行提供一定的可信度,只有通過JDBC驅動程序測試包的驅動程序才被認為是符合JDBC標準的。

4.JDBC-ODBC橋使ODBC驅動程序可被用作JDBC驅動程序。其目標是為方便實現訪問某些不常見的DBMS,它的實現為JDBC的快速發展提供了一條途徑。

在開始之前,我們先來實現一個簡單的JDBC程序

步驟

     1,注冊驅動;(只需要注冊一次)

     2,建立連接;

     3,創建執行的sql語句;

     4,執行語句;

     5,處理執行結果;

     6,釋放資源;

示例

java" id="highlighter_474675">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package cn.ccnu;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
 
import com.mysql.jdbc.Statement;
 
public class Demo1 {
 
  public static void main(String[] args) throws Exception {
    test();
  }
 
  public static void test() throws Exception {
    //1,注冊驅動
//   DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//   System.getProperty("jdbc.driver", "con.mysql.jdbc.Driver");
    Class.forName("com.mysql.jdbc.Driver");//這三種注冊方式,推薦使用這種
 
    //2,建立連接
    //url格式
    //JDBC:子協議:子名稱//主機名:端口/數據庫名稱
    String url = "jdbc:mysql://localhost:3306/test";//如果是本機,也可以將localhost:3306省掉
    String user = "root";
    String password = "123456";
    Connection conn = (Connection)DriverManager.getConnection(url, user, password);
 
    //3,創建slq執行語句
    Statement st = (Statement) conn.createStatement();
 
    //4,執行語句
    ResultSet rs = st.executeQuery("select * from a");
     
    //5,處理執行結果
    while (rs.next()) {
      System.out.println(rs.getObject(1));
    }
 
    //6,關閉連接,釋放資源
    rs.close();
    st.close();
    conn.close();
  }
 
}

分析JDBC開發步驟

使用JDBC訪問數據庫的基本步驟一般如下:

  • 加載JDBC驅動程序
  • 創建數據庫連接
  • 創建Statement對象
  • 執行SQL語句
  • 處理返回結果
  • 關閉創建的對象

開發第一個JDBC程序

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.wfu.ch09;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class Test1 {
 public static void main(String[] args) {
 try {
  Class.forName("com.mysql.jdbc.Driver");//里面的名字一定不要寫錯,這個也是導入的
  //forName(String className) 返回與帶有給定字符串名的類或接口相關聯的 Class 對象。
  Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/k-user","root","123456");//試圖建立到給定數據庫 URL 的連接。
  Statement stmt=conn.createStatement(); //創建一個 Statement 對象來將 SQL 語句發送到數據庫。
 
//  String insertsql="insert into k_user(userno,username,pwd) values('1002','張三','123')";
//  int x=stmt.executeUpdate(insertsql); //executeUpdate 返回一個int 型的數據 括號里面是一個字符串數據類型,詳細內容看文檔
 
  //(1) 對于 SQL 數據操作語言 (DML) 語句,返回行計數
  //(2) 對于不返回任何內容的 SQL 語句,返回 0
 
//  if(x>0){
//  System.out.println("插入成功!");
//  }
//  String updateSql="update k_user set pwd='123456' where userno='1002'";
//  int x=stmt.executeUpdate(updateSql);
//  if(x>0){
//  System.out.println("更新成功!");
//  }
  String deleteSql="delete from k_user where userno='1002'";
  int x=stmt.executeUpdate(deleteSql);
  if(x>0){
  System.out.println("刪除成功!");
  }
  String sql="select * from k_user";
  ResultSet rs=stmt.executeQuery(sql);
  while(rs.next()){
  for(int i=1;i<=13;i++){
   System.out.print(rs.getString(i)+" ");
  }
  System.out.println();
  }
  rs.close();
  stmt.close();
  conn.close();
 } catch (ClassNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 
 }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.wfu.ch09;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class Test2 {
 public static void main(String[] args) {
 try {
  // step1:加載JDBC驅動程序
  Class.forName("com.mysql.jdbc.Driver");
  // step2:建立數據庫的連接
  Connection conn = DriverManager.getConnection(
   "jdbc:mysql://localhost:3306/stock11", "root", "123");
//  // step3:創建Statement對象
  Statement st = conn.createStatement();
  //step4:執行SQL語句
  String selectSql="select * from k_user";
  //step5:處理結果集
  ResultSet rs=st.executeQuery(selectSql);
  while(rs.next()){
  for(int i=1;i<=13;i++){
   System.out.print(rs.getString(i)+" ");
  }
  System.out.println();
//  String x=rs.getString("hometown");
//  System.out.println(x);
  }
  //step6:關閉創建的對象
  //關閉結果集
  rs.close();
  //關閉statement對象
  st.close();
  //關閉連接
  conn.close();
 
 
  // step4: 執行SQL語句
////  String insertSql = "insert into k_user(userno,username,pwd) values('1001','tom','123')";
//  int x = st.executeUpdate(insertSql);
//  if(x>0){
//  System.out.println("插入成功!");
//  }
//  String updateSql="update k_user set pwd='123456' where userno='1001'";
//  int x=st.executeUpdate(updateSql);
//  if(x>0){
//  System.out.println("更新成功!");
//  }
//  String deleteSql="delete from k_user where userno='1001'";
//  int x=st.executeUpdate(deleteSql);
//  if(x>0){
//  System.out.println("刪除成功!");
//  }
  //
 
 } catch (ClassNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }
 
}

各個語句說明

加載JDBC驅動程序

加載驅動程序的方法:

?
1
Class.forName("DriverName")

其中DriverName是要加載的JDBC驅動程序名稱。驅動程序名稱根據數據庫廠商提供的JDBC驅動程序的種類來確定。

加載MySQL數據庫驅動程序的方法為:

?
1
Class.forName("com.mysql.jdbc.Driver");

加載Oracle數據庫驅動程序的方法為:

創建數據庫連接-1

DriverManager類是JDBC的管理層,作用于用戶和驅動程序之間,跟蹤可用的驅動程序,并在數據庫和相應驅動程序之間建立連接。該類負責加載、注冊JDBC驅動程序,管理應用程序和已注冊的驅動程序的連接。

DriverManager的常用方法:

 

方法名 功能說明
Static connection getConnection(String url, String user, String password) 用于建立到指定數據庫 URL 的連接。其中url為 提供了一種標識數據庫位置的方法,user為用戶名,password為密碼
static Driver getDriver(String url) 用于返回能夠打開url所指定的數據庫的驅動程序

 

使用DriverManager類的getConnection()創建一個數據庫連接:

?
1
Connection conn = DriverManager.getConnection(String url,String user,String password);

創建數據庫連接-2

URL提供了一種標識數據庫位置的方法,可以使相應的驅動程序能夠識別該數據庫并與它建立連接。

JDBC URL由三個部分組成:

?
1
jdbc : < subprotocol> : < subname>

可以根據子協議的改變而變化。

是子協議,指數據庫連接的方式。

創建數據庫連接-3

對于MySQL驅動的連結的URL是:

?
1
jdbc:mysql://serverName:port/instance
  • mysql為子協議名稱
  • serverName為MySQL數據庫服務器名稱,可以是一個域名,也可以是IP地址
  • port為MySQL數據庫的端口號,默認為3306
  • instance是數據庫的實例名

示例:

?
1
2
Connection conn = DriverManager.getConnection(
  "jdbc:mysql://localhost:3306/haier", "root", "123");

創建SQL 語句

創建完連接之后,可以通過此連接向目標數據庫發送SQL語句。在發送SQL語句之前,須創建一個Statement類的對象,該對象負責將SQL語句發送給數據庫。如果SQL語句運行后產生結果集,Statement對象會將結果集封裝成ResultSet對象并返回。

通過調用Connection接口的createStatement方法來創建Statement對象,如:

?
1
Statement smt = conn.createStatement();

執行SQL語句

在Statement接口中有兩個非常重要的方法,分別是executeUpdate方法和executeQuery方法。使用executeUpdate方法可以執行插入、修改和刪除等操作的SQL語句, executeUpdate方法的返回值是一個int類型數值,表示更新數據表的行數。使用 executeQuery方法可以執行數據庫查詢操作的SQL語句,他的返回值是實現ResultSet接口的對象,在其中保存從數據庫中查詢出來的數據。

例如:

?
1
int row=stmt.executeUpdate(sql);

寫到這,對于sql命令的展開沒有進行詳細的說明,在上面的例子中的代碼中有很多注釋,都有了詳細的說明,對于如何寫一個jdbc 程序也有了步驟說明,而且都是一個接著一個的,包括聲明的對象類型,還有一個注意的地方就是在最后關閉程序的時候,也是有順序的,對于有依賴關系的語句都是依次關閉的,在程序的代碼中也是有說明的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.cnblogs.com/yjlblog/p/7783381.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91理论片午午伦夜理片久久 | 国产一区精品 | 精品一区heyzo在线播放 | 99久久国产视频 | 极品 女神校花 露脸91 | 精品国产一区二区三区国产馆 | 国产小视频在线播放 | sese在线观看 | 天堂中文在线观看 | 狠狠燥 | 亚洲国产99999在线精品一区 | 亚洲美女啪啪 | 亚洲一区二区三区不卡在线播放 | 福利视频一区二区三区 | 大乳奶水bbw | 黄色wwwwww | 日韩欧美推理片免费看完整版 | 欧美人鲁交大全 | 亚洲 欧美 中文 日韩欧美 | 成人免费福利网站在线看 | 国产精品日本一区二区三区在线看 | 国产精品日韩欧美在线 | 久久全国免费久久青青小草 | 午夜精品免费 | 男gay网站视频免费观看 | 天堂色 | 高清国产精品久久 | 4hu永久地域网名入口 | 精品久久洲久久久久护士免费 | 91视频破解版 | 国产精品一区二区久久 | 国产精品 色 | 午夜视频网站 | 欧美黑人一级 | 国产偷啪视频一区 | 精品国产品香蕉在线观看75 | 爱情岛论坛亚洲永久入口口 | 免费被黄网站在观看 | 九九在线精品视频 | 男人j进女屁股视频在线观看 | 91porn在线观看国产 |