Java學習筆記 Day05
一、基本資料庫訪問
1.JDBC:
概念:jdbc體系結構基於一組Java介面和類,而這些介面和類能夠聯合起來使程式設計人員連線資料來源、
建立並執行SQL語句以及檢索和修改資料庫中的資料。
2.jdbc所提供的介面和類:
1) DriverManager:驅動程式管理器,主要用來獲得與資料庫的連線:
Connection getConnection(url,username,password);
引數說明:
url:連線資料庫的連線字串
username:登入資料庫的賬號
password:登入資料庫的密碼
2) Connection:表示與資料庫的連線,主要用於獲取執行SQL語句的預置語句物件:
PrepareStatement preparedStatement(sql)
3) PrepareStatement:預置語句執行體,主要用於執行SQL語句
int executeUpdate():執行非查詢語句(INSERT、DELETE、UPDATE)
ResultSet executeQuery():執行查詢語句(SELECT),返回結構集
4) ResultSet :執行查詢語句之後返回的結果集
I. boolean next():將結果集記錄指標移動到下一條記錄,如果有記錄則返回true,否則返回false,常常跟迴圈搭配使用
II.獲取當前記錄欄位值的方法:getXXX(),其中XXX表示資料庫中欄位的型別對應java的資料型別
Java和MySQL型別對映
MySQL資料型別 Java資料型別
char/varchar String
date java.sql.Date
java.sql.Time
java.sql.Timestamp
int short
int
long
decimal float
double
比如:String sql="select name,age from users";執行sql後得到的結果集ResultSet的物件為rs,
則String name=rs.getString(1);//1表示獲取當前記錄的第一列的資料,即name這一列的資料,
同時我們還可以直接使用列名來獲取:int age=rs.getInt("age");//表示獲取當前記錄的age這一列的
資料。
3,補充知識點:異常處理
語法:
try{
//可能發生異常的程式碼
}catch(異常型別1){
//處理異常型別1
}catch(異常型別2){
//處理異常型別2
}
...
finally{
//無論異常釋出發生,該語句塊都會執行,常常用於釋放資源
}
throws:丟擲異常,放在方法頭,表可能會發生異常,但並不一定會發生異常
public void connToDB() throws SQLException{
}
throw:丟擲異常,放在方法體中的,使用了這個關鍵字,一定發生了異常
public void connToDB() {
...
throw new UserException(); //程式碼丟擲了UserException異常
..
}
4.jdbc訪問資料庫的步驟:
第一步:匯入資料庫驅動包:
在工程下建立一個lib資料夾,將mysql-connector-java-5.1.40-bin.jar資料庫驅動包拷貝到lib資料夾下,
然後再將驅動包新增到工程的build_path下。
匯入import java.sql.*;
第二步:載入並註冊驅動程式:
Class.forName("com.mysql.jdbc.Driver");
第三步:定義連線字串url:
String url="jdbc:mysql://localhost:3306/test":其中localhost表示連線本地資料庫伺服器,3306為
通訊埠號,test是我們要連線的資料庫的名稱
其中localhost:3306是預設的設定,所以可以將url簡寫成:
String url="jdbc:mysql:///test";
第四步:使用驅動程式管理器DriverManger的getConnection方法獲得與資料庫的連線
Connection conn=DriverManager.getConnection(url,username,password);
第五步:定義待執行的SQL語句:
String sql="select name,age from users where id=?";
"?"在這裡代表佔位符,在預置語句物件PreparedStatement執行SQL語句之前對它進行賦值,
賦值方法為:setXXX(第幾個佔位符,要設定的值),其中XXX表示佔位符中的要設定的值的java資料型別,
第一個引數表示該佔位符是第幾個佔位符(取值有:1,2,3,...),第二個引數為要設定的值
第六步:使用Connection物件的prepareStatement方法獲得預置語句物件,並使用預置語句物件設定
佔位符的值
PreparedStatement pstmt=conn.prepareStatement(sql);
//設定佔位符的值
pstmt.setInt(1,1001);
第七步:使用pstmt的executeQuery方法執行SQL語句,得到結果集物件ResultSet
ResultSet rs = pstmt.executeQuery();
第八步:遍歷結果集,得到資料
while(rs.next()){
String name=rs.getString(1);//獲取當前行的第一個欄位的值,即name這一列的值
int age=rs.getInt("age");//獲取當前行的age這一列的值
System.out.println(name+":"+age);
}
第九步:關閉資源
rs.close();
pstmt.close();
conn.close();
5.ResultSet的API:
通用的獲得當前記錄某一列值的方法:
Object getObject(int columnIndex); //獲取當前記錄的指定編號的列的Object型別的值
Object getObject(String columnName);//獲取當前記錄的指定列名的這一列的Object型別的值
獲取結果集元資料資訊
ResultSetMetaData rsmd=rs.getMetaData(); //ResultSetMetaData結果集的元資料資訊
ResultSetMetaData結果集的元資料資訊的方法:
getColumnCount():返回結果集中的列數
getColumnName(int num):返回num指定位置上的列的名稱
對NULL值的處理
rs.wasNull():判斷上一個取得的欄位的值是否為null
6.JDBC中的事務
1).事務:把資料庫從一個一致狀態帶到下一個一致狀態。當我們在資料庫中提交工作時,事務保證我們的修改
要麼全部儲存,要麼全部不儲存。
2).事務的控制語句:
提交:commit
回滾:rollback
3).JDBC驅動程式所提供的連線類將提供事務控制,當代碼從DriverManger中獲得一條連線時,JDBC要求該連線
處於事務自動提交模式,這意味著每條SQL語句都會被當做一個事務來對待,而且該事務會在該SQL語句執行過後
提交。
4).JDBC的事務的自動提交模式可能存在問題,JDBC通過Connection物件的SetAutoCommit(boolean)方法來決定
是否啟動自動提交,若將引數設為false,則為手動提交模式,使用者可以顯式的呼叫連線物件的commit()或rollback()
方法來提交或回滾事務。
7.通用的訪問資料庫的工具類
DBFactory
8.JavaBean類
1.概念:被用於封裝各種操作的細節,可以用來實現業務邏輯或資料訪問邏輯的細節,這樣就可以將軟體分層:顯式給
客戶的是一部分,訪問資料庫的是一部分。
2.JavaBean類的要求:
要與所有類一樣,資料成員是不能直接被訪問的,要通過getter,setter方法來訪問
3.JavaBean類對映資料庫中資料:
1)對映表中的一條記錄
2)對映一張表中的所有記錄
相關推薦
Java學習筆記 Day05
一、基本資料庫訪問 1.JDBC: 概念:jdbc體系結構基於一組Java介面和類,而這些介面和類能夠聯合起來使程式設計人員連線資料來源、 建立並執行SQL語句以及檢索和修改資料庫中的資料。 2.jdbc所提供的介面和類: 1) DriverManager:驅動程式管理器,
java學習筆記——String類
通過 ray [] 原理 log spl 2.3 -s 長度 一、概述 ·字符串是一個特殊的對象 ·字符串一旦初始化就不可以被改變 ·String str = "abc"; ·String str1 = new String("abc"); 有什麽區別? package
java學習筆記——java中對象的創建,初始化,引用的解析
初始 學習筆記 style article 學習 base 表達 如果 bsp 如果有一個A類。 1、例如以下表達式: A a1 = new A(); 那麽A是類,a1是引用。new A()是對象。僅僅是a1這個引用指向了new A()這個對象。 2、又如: A
Java學習筆記--鏈表
引用變量 nts mage 集合 tran 分享 isp exce pub 心在山東身在吳,飄蓬江海漫嗟籲。 他時若遂淩雲誌, 敢笑黃巢不丈夫。 ——水滸傳 先上源代碼,LinkedList類: 1 private static class
Java學習筆記——淺談數據結構與Java集合框架(第一篇、List)
技術分享 emp 鏈表 adc 下標 -c nod nal integer 橫看成嶺側成峰,遠近高低各不同。不識廬山真面目,只緣身在此山中。 ——蘇軾 這一塊兒學的是雲裏霧裏,咱們先從簡單的入手。逐漸的撥開迷霧見太陽。本次先做List集合的三
JAVA學習筆記(1)——a++與++a的區別
col int 演示 opera 解析 代碼 數據 ++i div 需求:此博客用於解釋i++與++i的區別。 過程: 1、名稱解釋 ++:自增,即在原有數據基礎上+1,再賦給原有數據。 2、程序演示 (1)代碼: 1 class OperateDemo 2 { 3
Java學習筆記——泛型
ray dem 想想 string stub odt 好處 reac test 一、什麽是泛型?為什麽要使用泛型? 且看代碼: 1 public class GenericsDemo { 2 3 public static void main(String
Java學習筆記——排序算法之O(n²)排序
blog sel != 而是 while bsp 優化 ++ logs 男兒何不帶吳鉤,收取關山五十州。請君暫上淩煙閣,若個書生萬戶侯? ——南園十三首 三種排序法: 1、冒泡法 2、簡單選擇法 3、直接插入法
Java學習筆記——排序算法之進階排序(堆排序與分治並歸排序)
進行 技術分享 ring http 沒有 oid 有序 重復 調整 春蠶到死絲方盡,蠟炬成灰淚始幹 ——無題 這裏介紹兩個比較難的算法: 1、堆排序 2、分治並歸排序 先說堆。 這裏請大家先自行了解完全二叉樹的數據結構。 堆是完全二叉樹。
Java學習筆記——設計模式之五.工廠方法
strong scanner multipl 石頭 simple 決定 定義 opera 下使用 水邊一只青蛙在笑 ——石頭和水 工廠方法模式(Factory Method),定義了一個用於創建對象的接口,讓實現類決定實例化哪一個類。工廠方法使一個類的實
Java學習筆記——String類型轉換
世界 java學習筆記 getc [] bool bsp ati nbsp ole 一滴水裏觀滄海,一粒沙中看世界 ——一帶一路歡迎宴致辭 上代碼: 1 package cn.stringtoobj; 2 3 public
Java學習筆記--double類型數據精度
java學習 double 在一次面試中被問到,有兩個double類型的數相減,會出現精度丟失,應該怎麽辦,有什麽解決方法。今天特地去搜了下,解決方法就是用BigDecimal類對數據進行處理。 了解詳細參考:http://blog.csdn.net/u011328015/article
JAVA學習筆記(三)
byte repl efi ber 時間 clas 區分大小寫 增強for size @SuppressWarnings("resource")是用來壓制資源泄露警告的。比如使用io類,最後沒有關閉。Set集合特點:1)無序,不隨機2)元素唯一3)沒下標註意:Collect
Java學習筆記——Linux下安裝配置MySQL
code names 刪掉 set 影響 per install nod 設置 山重水復疑無路,柳暗花明又一村 ——遊山西村 系統:Ubuntu 16.04LTS 1\官網下載mysql-5.7.18-linux-glibc2.5-x86
java 學習筆記1
跨平臺原理 所有 com 路徑 運行機制 main 單位 width rtu 、 高級語言運行機制 高級語言按程序的執行方式分為編譯型和解釋型兩種。 java語言比較特殊,Java程序的執行必須經過先編譯後解釋的步驟。 1 編譯生成字節碼,只面向JVM(.class) 2J
java學習筆記(二)圖形用戶接口
star strong per getwidth cep runnable graphics s2d gb2 這個學期主要放在ACM比賽上去了,比賽結束了。不知不覺就15周了,這周就要java考試了,復習一下java吧。java的學習的目的還是讓我們學以致用,讓我們可以
Java學習筆記——MySQL開放3306接口與設置用戶權限
delete 用戶權限 -a mysq min 修改 onf 127.0.0.1 權限 系統Ubuntu16.04 LTS 1、開放3306端口查看端口狀態:netstat -an|grep 3306tcp 0 0 127.0.0.1:3306
Java學習筆記----容器
class div key-value 程序 對象 dha for string 選擇 一、Java Collections框架是什麽? Java Collections 框架中包括了大量集合接口以及這些接口的實現類和操作它們的算法(如:排序、查找、反轉、替換、復制、取
java 學習筆記2 面向對象(上)
awr ges abs nal mage 有效 面向對象 ima col 類和對象 類是某一批對象的抽象,可以把類理解成某種概念。對象是一個具體存在的實體。類和對象是面向對象的核心。 類定義的是多個實例的特征,類不是具體存在,實例才是具體存在。 定義類(class)的語法:
Java學習筆記-序
內容 上班 之前 學習 有時 看書 思想 決定 讀書 最近開始學習java了,上班看書看得經常瞌睡,有時候想起來覺得挺重要的知識點想記在哪裏又害怕忘記了,於是乎突然想到了博客園,所以今天上午就決定記在院子裏了,先寫了8是因為已經看到第八章了(讀的是Java編程思想第四版完整