国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java開發中基于JDBC連接數據庫實例總結

java開發中基于JDBC連接數據庫實例總結

2020-01-16 16:27蒼浪劍賦 JAVA教程

這篇文章主要介紹了java開發中基于JDBC連接數據庫的方法,以實例形式較為詳細的總結分析了Java使用JDBC的具體步驟與注意事項,并附帶了一個完整實例加以說明,需要的朋友可以參考下

本文實例講述了java開發中基于JDBC連接數據庫的方法。分享給大家供大家參考,具體如下:

創建一個以JDBC連接數據庫的程序,包含7個步驟:  

1、加載JDBC驅動程序:

在連接數據庫之前,首先要加載想要連接的數據庫的驅動到JVM(Java虛擬機),這通過java.lang.Class類的靜態方法forName(String  className)實現。

例如:

?
1
2
3
4
5
6
7
try{
//加載MySql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,加載驅動失敗!");
e.printStackTrace() ;
}

成功加載后,會將Driver類的實例注冊到DriverManager類中。

2、提供JDBC連接的URL

連接URL定義了連接數據庫時的協議、子協議、數據源標識。  

書寫形式:協議:子協議:數據源標識  
協議:在JDBC中總是以jdbc開始  
子協議:是橋連接的驅動程序或是數據庫管理系統名稱。  
數據源標識:標記找到數據庫來源的地址與連接端口。

例如:(MySql的連接URL)

jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;

useUnicode=true:表示使用Unicode字符集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字符編碼方式。

3、創建數據庫的連接

要連接數據庫,需要向java.sql.DriverManager請求并獲得Connection對象,該對象就代表一個數據庫的連接。

使用DriverManager的getConnectin(String url , String username , String password )方法傳入指定的欲連接的數據庫的路徑、數據庫的用戶名和密碼來獲得。

例如:

?
1
2
3
4
5
6
7
8
9
10
//連接MySql數據庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con = DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("數據庫連接失敗!");
se.printStackTrace() ;
}

4、創建一個Statement

要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 
種類型:

1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行數據庫存儲過程。通常通過CallableStatement實例實現。

具體的實現方式:

?
1
2
3
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;

5、執行SQL語句

Statement接口提供了三種執行SQL語句的方法:executeQuery 、executeUpdate和execute

1、ResultSet executeQuery(String sqlString):執行查詢數據庫的SQL語句,返回一個結果集(ResultSet)對象。

2、int executeUpdate(String sqlString):用于執行INSERT、UPDATE或DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等

3、execute(sqlString):用于執行返回多個結果集、多個更新計數或二者組合的語句。

具體實現的代碼:

?
1
2
3
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;

6、處理結果

兩種情況:

1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。

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

使用結果集(ResultSet)對象的訪問方法獲取數據:

?
1
2
3
4
while(rs.next()){
 String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比較高效
}

(列是從左到右編號的,并且從列1開始)

7、關閉JDBC對象

操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:

1、關閉記錄集
2、關閉聲明
3、關閉連接對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if(rs != null){ // 關閉記錄集
try{
  rs.close() ;
}catch(SQLException e){
  e.printStackTrace() ;
}
}
if(stmt != null){ // 關閉聲明
try{
  stmt.close() ;
}catch(SQLException e){
  e.printStackTrace() ;
}
}
if(conn != null){ // 關閉連接對象
 try{
  conn.close() ;
 }catch(SQLException e){
  e.printStackTrace() ;
 }
}

補充:JDBC連接Oracle數據庫示例

?
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
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestOracle {
 public static void main(String[] args) {
 Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");//實例化oracle數據庫驅動程序(建立中間件)
   String url = "jdbc:oracle:thin:@localhost:1521:oar92";//@localhost為服務器名,sjzwish為數據庫實例名
   conn = DriverManager.getConnection(url, "guchao", "jimmy");//連接數據庫,a代表帳戶,a代表密碼
   stmt = conn.createStatement();//提交sql語句,創建一個Statement對象來將SQL語句發送到數據庫
   //查詢數據用executeQuery
   rs = stmt.executeQuery("select * from ruby");//執行查詢,(ruby)為表名
   while (rs.next()) {//使當前記錄指針定位到記錄集的第一條記錄
   System.out.println(rs.getString("sid") +" "+ rs.getString("sname"));
   }//1代表當前記錄的第一個字段的值,可以寫成字段名。
   //2代表當前記錄的第二個字段的值,可以寫成字段名。
   //添加數據用executeUpdate
   //stmt.executeUpdate("insert into ss values(7,'張學友')");
   //修改數據用executeUpdate
   //stmt.executeUpdate("update ss set name = '張曼玉' where id = 5");
   //刪除 數據用executeUpdate
   //stmt.executeUpdate("delete from ss where id = 6");
  } catch (SQLException e) {
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }finally{
   try {
   //關閉數據庫,結束進程
   rs.close();
   stmt.close();
   conn.close();
   } catch (SQLException e) {
   e.printStackTrace();
   }
  }
 }
}

希望本文所述對大家Java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产黄色在线观看 | av成人在线观看 | 免费av在线播放 | www中文字幕 | 99热这里有| 日韩av一级片 | 成人日韩| www.色.com| 午夜视频在线免费观看 | 91精选| 人人爱人人草 | 亚洲乱码国产乱码精品精98午夜 | 欧美3区 | 久久男人天堂 | 亚洲第一视频 | 中文字幕在线免费视频 | 亚洲国内精品 | 国产99久久 | 日韩精品av一区二区三区 | 精品毛片 | 成人免费毛片aaaaaa片 | www.av在线 | 亚洲成人高清 | 国产毛片毛片 | 久久久久国产精品免费免费搜索 | 国产成人精品久久二区二区 | 国产成人欧美一区二区三区的 | 成人影音| 亚洲免费国产视频 | 91av电影网 | 日韩色 | 久久精品a一级国产免视看成人 | 国产精品极品美女在线观看免费 | 亚色图| 欧美中文字幕一区二区三区 | 国产精品久久久久久亚洲调教 | 亚洲免费视频一区 | 成人一区二区三区久久精品嫩草 | 亚洲福利 | 色综合久久久 | 蜜桃tv一区二区三区 |