1. 程式人生 > >JDBC(1)四大物件 原理和操作步驟

JDBC(1)四大物件 原理和操作步驟

一、JDBC概述

為什麼要使用JDBC?

JDBC:java database connectivity SUN公司提供的一套操作資料庫的標準規範。
JDBC與資料庫驅動的關係:介面與實現的關係。

JDBC規範(掌握四個核心物件):
DriverManager:用於註冊驅動
Connection: 表示與資料庫建立的連線
Statement: 操作資料庫sql語句的物件
ResultSet: 結果集或一張虛擬表



開發一個JDBC程式的準備工作:
> JDBC規範在哪裡:
JDK中:
java.sql.*;
javax.sql.*;
> 資料庫廠商提供的驅動:jar檔案
*.jar 一定變成奶瓶才可用~~~


二、開發一個JDBC程式(重要)

實現查詢資料庫中的資料顯示在java的控制檯中

1、建立資料庫表,並向表中新增測試資料
create database day06;
use day06;

create table users(
id int primary key auto_increment,
name varchar(40),
password varchar(40),
email varchar(60),
birthday date
)character set utf8 collate utf8_general_ci;

insert into users(name,password,email,birthday) values('zs','123456','
[email protected]
','1980-12-04');
insert into users(name,password,email,birthday) values('lisi','123456','[email protected]','1981-12-04');
insert into users(name,password,email,birthday) values('wangwu','123456','[email protected]','1979-12-04');


2、建立java project專案,新增資料庫驅動(*.jar)

3、實現JDBC操作

//1、註冊驅動
//2、建立連線
//3、得到執行sql語句的Statement物件
//4、執行sql語句,並返回結果
//5、處理結果
//6 關閉資源



三、JDBC常用的類和介面詳解

1、java.sql.DriverManager類 : 建立連線

a、註冊驅動

DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建議使用
原因有2個:
> 導致驅動被註冊2次。com.mysql.jdbc.Driver()中也有com.mysql.jdbc.Driver();

> 強烈依賴資料庫的驅動jar

解決辦法:

Class.forName("com.mysql.jdbc.Driver"); 反射機制

b、與資料庫建立連線
最常用第一種方法:
1. static Connection getConnection(String url, String user, String password)
試圖建立到給定資料庫 URL 的連線。

getConnection ("jdbc:mysql://localhost:3306/day06", "root", "root");

URL:SUN公司與資料庫廠商之間的一種協議。
jdbc:mysql://localhost:3306/day06
協議 子協議 IP :埠號 資料庫
mysql: jdbc:mysql://localhost:3306/day14 或者 jdbc:mysql:///day14(預設本機連線)
oracle: jdbc:oracle:thin:@localhost:1521:sid

2.
Properties info = new Properties();//要參考資料庫文件
info.setProperty("user", "root");
info.setProperty("password","root");

getConnection(String url, Properties info)

3.
getConnection(String url)
DriverManager.getConnection("jdbc:mysql://localhost:3306/day14?user=root&password=root");

2、java.sql.Connection介面:一個連線
介面的實現在資料庫驅動中。所有與資料庫互動都是基於連線物件的。

Statement createStatement(); //建立操作sql語句的物件

3、java.sql.Statement介面: 操作sql語句,並返回相應結果的物件(小貨車)
介面的實現在資料庫驅動中。用於執行靜態 SQL 語句並返回它所生成結果的物件。
1. ResultSet executeQuery(String sql) 根據查詢語句返回結果集。只能執行select語句。
2. int executeUpdate(String sql) 根據執行的DML(insert update delete)語句,返回受影響的行數。0為失敗。

3. boolean execute(String sql) 此方法可以執行任意sql語句。返回boolean值,表示是否返回ResultSet結果集。僅當執行select語句,且有返回結果時返回true, 其它語句都返回false;

4、java.sql.ResultSet介面: 結果集(客戶端存表資料的物件)
a、封裝結果集的。
提供一個遊標,預設遊標指向結果集第一行之前。(即列名)
呼叫一次next(),遊標向下移動一行。
提供一些get方法。

封裝資料的方法
Object getObject(int columnIndex); 根據序號取值,索引從1開始
Object getObject(String ColomnName); 根據列名取值。

將 結果集 中的資料封裝到javaBean中

java的資料型別與資料庫中的型別的關係
byte tityint
short smallint
int int
long bigint
float float
double double
String char varchar
Date date


boolean next() 將游標從當前位置向下移動一行
int getInt(int colIndex) 以int形式獲取ResultSet結果集當前行指定列號值
int getInt(String colLabel) 以int形式獲取ResultSet結果集當前行指定列名值
float getFloat(int colIndex) 以float形式獲取ResultSet結果集當前行指定列號值
float getFloat(String colLabel) 以float形式獲取ResultSet結果集當前行指定列名值
String getString(int colIndex) 以String 形式獲取ResultSet結果集當前行指定列號值
String getString(String colLabel) 以String形式獲取ResultSet結果集當前行指定列名值
Date getDate(int columnIndex);
Date getDate(String columnName);
void close() 關閉ResultSet 物件





b、可移動遊標的方法
boolean next():將游標從當前位置向前移一行。
boolean previous() : 將游標移動到此 ResultSet 物件的上一行。
boolean absolute(int row) 引數是當前行的索引,從1開始
根據行的索引定位移動的指定索引行。
void afterLast()
將游標移動到末尾,正好位於最後一行之後。
void beforeFirst()
將游標移動到開頭,正好位於第一行之前。

5、釋放資源

資源有限,要正確關閉。


最後xxx=null;為了方便垃圾回收~








相關推薦

JDBC1四大物件 原理操作步驟

一、JDBC概述為什麼要使用JDBC?JDBC:java database connectivity SUN公司提供的一套操作資料庫的標準規範。JDBC與資料庫驅動的關係:介面與實現的關係。JDBC規範(掌握四個核心物件):DriverManager:用於註冊驅動Connec

大型網站的 HTTPS 實踐1:HTTPS 協議原理

1 前言 百度已經於近日上線了全站 HTTPS 的安全搜尋,預設會將 HTTP 請求跳轉成 HTTPS。本文重點介紹 HTTPS 協議, 並簡單介紹部署全站 HTTPS 的意義。 2 HTTPS 協議概述 HTTPS 可以認為是 HTTP + TLS。HTTP 協議

Android基礎筆記十三- 內容提供者原理簡單使用

暴露 tel java 四大組件 per 存儲 建數據庫 開發 fun 為什麽要有內容提供者 內容提供者的工作原理 使用內容解析者對內容提供者進行增刪改查操作 利用內容提供者和內容解析者備份手機短信 利用內容提供者插入短信 為什麽要有內容

JDBC1——獲取數據庫連接

name puts 數據庫驅動 靜態代碼塊 use root driver pri gui 主要講通過 DriverManager 連接 DriverManager 是驅動的管理類. 1). 可以通過重載的 getConnection() 方法獲取數據庫連接. 較為方便

Jacoco簡析原理 改造新增代碼覆蓋率標識進入報告

element ssp fff scounter except div clas ioe ntop 首先從註入方式開始: On-the-fly插樁: JVM中通過-javaagent參數指定特定的jar文件啟動Instrumentation的代理程序,代理程序在通過

JDBC1

而後 product 一個數 set 連接方式 mil ssp mongodb int 一、JDBC簡介。   JDBC(Java DataBase Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,

內置函數1判斷子類是不是對象

IV print color sta ins 對象 instance type 子類 1.判斷是不是對象 原本判斷時 type(參數)is (參數) 現用內置函數: class Foo: pass obj=Foo() print(isinstance(obj,Fo

Spring IOC 應用 1管理物件

一,搭建Spring IOC開發環境 1,引入相關jar包(IOC jar包) 2,在src新增applicationContext.xml 二,建立物件 1,在applicationContext.xml中加入<beans>父標籤和<bean>子標籤,我們將在該

繼承派生1:繼承概念繼承方式

派生類的定義: 看一個有趣的例子: #include <iostream> using namespace std; class A { public: void f(int i){cout<<i<<endl;}

理解Docker1:Docker 安裝基礎用法

來源:https://www.cnblogs.com/sammyliu/p/5875470.html 1. 安裝 1.1 在 Ubuntu 14.04 上安裝 Docker 前提要求: 核心版本必須是3.10或者以上 依次執行下面的步驟: sudo apt-g

javaweb學習筆記十五JDBC1

目錄 1.概念 2 JDBC介面的核心API 例1:jdbc連線資料庫  例2:Statement物件演示 例3:PreparedStatement物件演示 例4:CallableStatement物件演示 1.概念 SUN公司為了簡化、統一對資料庫

高效學習源頭、原理知識地圖

所有內容均來自左耳朵耗子的極客專欄 挑選知識和資訊源 如果你覺得用百度搜中文關鍵詞就可以找到自己想要的知識,那麼你一定遠遠落後於這個時代了。如果你用 Google 英文關鍵詞可以找到自己想要的知識,那麼你算是能跟得上這個時代。如果你能在社群裡跟社群裡的大牛交流得到答

DeepLearning tutorial1Softmax迴歸原理簡介+程式碼詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java-JDBC1

得到 nbsp 成對 spa ext 概述 三個參數 jvm imp 一, 1.jdbc概述:jdbc是一種用來執行sql語句的java api,可以為多種關系數據庫提供同意訪問,是由一組用Java代碼寫的類和接口組成,是java訪問數據庫的標準規範 2.jdbc原理:Ja

Kafka學習筆記1----Kafka的簡介Linux下單機安裝

1. Kafka簡介   Kafka is a distributed,partitioned,replicated commit logservice。它提供了類似於JMS的特性,但是在設計實現上完全不同,此外它並不是JMS規範的實現。kafka對訊息儲存時根據Topic進行歸類,傳送訊息者成為Produ

【深度探索C++物件模型】1關於物件

哎 再開新坑,希望19年能把開的這幾個坑都填上。 class : 類 class object : 類物件 1 C++物件模型 簡單來說,C++物件模型的例項的組成包括下面幾個部分: Nonstatic data members與**virtual pointer(vpt

第11章 拾遺4:IPv61_報文格式地址型別

1. IPv4和IPv6協議棧的比較 (1)IPv6取代IPv4,支援IPv6的動態路由協議都屬於IPv6協議(如RIPng、OSPFv3)。 (2)Internet控制訊息協議IPv6版(ICMPv6)取代ICMP,它報告錯誤和其他資訊以幫助你診斷不成功的資料包傳送。其主要功能有鄰居

第10章 網路安全1_對稱加密非對稱加密

1 網路安全概述 1.1 計算機網路面臨的安全威協 (1)截獲:攻擊者從網路上竊聽他人的通訊內容,通常把這類攻擊稱為“截獲”。在被動攻擊中,攻擊者只是觀察和分析某一個協議資料單元(PDU)而不干擾資訊流。 (2)篡改:攻擊者篡改網路上傳遞的報文。這裡包括徹底中斷傳遞的報文,甚至把完

作業系統——程序1什麼是程序對程序狀態的理解

在作業系統中滿足的大多數需求都涉及程序,在有了應用程式、系統軟體和資源的概念,就需要一種有序的方式管理應用程式的執行,從而能夠讓資源對多個應用程式是可用的、能夠讓所有程式得以執行、充分利用所有裝置。 程序如此重要那麼程序是什麼?首先程序是一個正在計算機上執行的程式例項,即程式是靜態

Java三大器之監聽器Listener的工作原理代碼演示

invalid -c ring try local sna 高效 jdb monitor 現在來說說Servlet的監聽器Listener,它是實現了javax.servlet.ServletContextListener 接口的服務器端程序,它也是隨web應用的啟動而啟動