jdbc簡介和 crud操作
1、JDBC(Java Data Base Connectivity java資料庫連線)概念:
是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成
DBC是我們使用JAVA程式操作資料庫的工具.
JDBC由java.sql和javax.sql兩個包組成, 在jdk5.0之後包含在JavaSE中, 不需要匯入.
除了這兩個包之外, 我們還需要匯入資料庫對應的驅動.
2、第一個JDBC程式
搭建環境
在資料庫中建立庫、表、插入資料.
建Java工程, 匯入驅動
在程式中載入驅動
DriverManager.registerDriver(driver)
建立連線
Connection conn = DriverManager.getConnection(url, user, password)
建立Statement物件
Statement st = conn.createStatement()
執行SQL語句, 獲取ResultSet
ResultSet rs = st.executeQuery(sql)
從Result中獲取資料, 顯示
rs.next()
rs.getObject(columnLabel)
釋放資源
rs.close()
st.close()
conn.close()
3、程式
1)註冊驅動
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
2)獲取連線、URL地址
DriverManager通過已註冊的驅動獲取Connection, 這個Connection是java.sql.Connection的實現類.
DriverManager在獲取連線的時候需要URL地址, 地址的語法為:
jdbc:mysql://ip:port/sid[?引數名=引數值][&引數名=引數值]
jdbc:mysql: 是協議和子協議
sid 是資料庫名, 例如jdbc1
後面可以跟引數,例如?user=root&password=root 或者 useUnicode=true&characterEncoding=UTF-8
常用資料庫的url地址
Oracle: jdbc:oracle:thin:@localhost:1521:sid
SQL Server: jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sid
MySQL: jdbc:mysql://localhost:3306/sid
3)
Statement createStatement()
建立Statement物件, Statement物件可以向資料庫傳送SQL語句
PreparedStatement prepareStatement(String sql)
在程式中編譯sql語句, 可以減輕資料庫伺服器壓力, 以及提高程式安全性.
CallableStatement prepareCall(String sql)
呼叫儲存過程, 儲存過程是資料庫中的一組編譯好的SQL語句, 類似於Java中的函式
void setAutoCommit(boolean autoCommit)
設定自動提交事務
void commit()
提交事務
void rollback()
回滾事務
4)
ResultSet executeQuery(String sql)
執行查詢語句, 返回結果集
int executeUpdate(String sql)
執行插入, 修改, 刪除語句, 返回影響行數
boolean execute(String sql)
執行任意sql語句, 返回執行是否成功
void addBatch( String sql )
將sql語句新增到命令列表
int[] executeBatch()
執行命令列表, 返回每一個命令影響的行數
5)
通過Statement執行查詢語句可以獲得結果集.
結果集中儲存從資料庫中查詢出資料的集合, 內部維護一個指標, 預設指向開始位置之前.
boolean next()
嘗試將指標向下移動一行, 返回是否成功
Object getObject(int columnIndex)
Object getObject(String columnName)
當指標指向某一條記錄之後, 可以根據列號或者列名獲取某一列的資料, 由於資料庫中可以存放多種型別資料, 所以返回Object
boolean next()
嘗試將指標向後移動一行, 返回是否成功
boolean previous()
嘗試將指標向前移動一行, 返回是否成功
boolean absolute(int row)
嘗試將指標移動到指定行, 返回是否成功
void beforeFirst()
將指標移動到第一行以前
void afterLast()
將指標移動到最後一行以後
6)釋放資源
在程式執行結束以後, 和資料庫相關的資源不會被自動釋放掉, 我們需要手動釋放ResultSet, Statement, Connection尤其Connection是非常寶貴的資源, 使用結束之後應該儘早釋放.
為了確保釋放資源的程式碼一定會執行到, 我們通常將它們放在finally中
4、CRUD操作
CRUD是指在做計算處理時的增加(Create)、查詢(Retrieve)(重新得到資料)、更新(Update)和刪除(Delete)幾個單詞的首字母簡寫。主要被用在描述軟體系統中資料庫或者持久層的基本操作功能。
C reate new records
R etrieve existing records
U pdate existing records
D elete existing records
1)Create
Statement st = conn.createStatement();
String sql = "insert into user(name,password,email,birthday) values('zl','111111','[email protected]','2011-2-19')";
st.executeUpdate(sql);
2)Retreve
Statement st = conn.createStatement();
String sql = "select id,name,password,email,birthday from user";
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
System.out.print(rs.getInt(1) + "\t");
System.out.print(rs.getString(2) + "\t");
System.out.print(rs.getString(3) + "\t");
System.out.print(rs.getString(4) + "\t");
System.out.println(rs.getDate(5) + "\t");
}
3)Update
Statement st = conn.createStatement();
String sql = " update user set password='123456' where id=4";
st.executeUpdate(sql);
4)Delete
Statement st = conn.createStatement();
String sql = " delete from user where id='4'";
st.executeUpdate(sql);
5、註冊
6、PreparedStatement
1. )PreparedStatement是Statement的子類. 具有預編譯的功能. 可以將SQL語句編譯之後再發送到資料庫. 具有以下優點
a) 由於編譯之後才傳送, 解決了SQL注入問題, 提高程式安全性.
b) 由於編譯之後才傳送, 減輕了伺服器壓力, 提高了程式效能.
c) 由於可以設定佔位符, 使程式碼結構更清晰, 提高程式碼可讀性.
2. )使用方式
Connecion類中PreparedStatement prepareStatement(String sql)方法預編譯SQL語句, 獲得一個PreparedStatement
SQL語句中可以使用問號預設佔位符
PreparedStatement類中多個setXxx()方法可以設定佔位符的值, 注意佔位符從1開始
PreparedStatement類中int executeUpdate() 可以執行預設SQL語句進行更新操作, 返回影響行數, 注意不要加引數
PreparedStatement類中ResultSet executeQuery() 可以執行預設SQL語句進行查詢操作, 返回結果集
3. )查詢程式碼示例
PreparedStatement st = conn.prepareStatement("select id,name,password,email,birthday from user where name=?");
st.setString(1, name);
ResultSet rs = st.executeQuery();
4.)更新程式碼示例
PreparedStatement st = conn.prepareStatement("insert into user(name,password,email,birthday) values(?,?,?,?)");
st.setString(1, user.getName());
st.setString(2, user.getPassword());
st.setString(3, user.getEmail());
st.setDate(4, new Date(user.getBirthday().getTime()));
st.executeUpdate();
7、大文字與二進位制操作
1)TEXT(CLOB)
MySQL中VARCHAR上限為65535個位元組, 如果超出這個範圍. 需要設定為TEXT.
LONGTEXT最大可以4G
儲存TEXT
PreparedStatement ps = conn.prepareStatement("insert into clob(file) values(?)");
File file = new File("src/cn/itcast/jdbc1/clob_blob/ClobDemo.java");
Reader reader = new FileReader(file);
ps.setCharacterStream(1, reader, (int) file.length());
ps.executeUpdate()
也可以使用ps.setString()直接設定, 但如果字串太大, 有可能超出虛擬機器記憶體
讀取TEXT
PreparedStatement ps = conn.prepareStatement("select file from clob");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
Reader reader = rs.getCharacterStream(int columnIndex);
// 這個Reader就是從資料庫中讀取資料的流, 操作這個流來讀取資料
}
2)BLOB
BLOB用來儲存大段的二進位制資料, 例如圖片, 音訊, 視訊. LONGBLOB最大4G
儲存BLOB
PreparedStatement ps = conn.prepareStatement("insert into big_binary(file) values(?)");
File file = new File("src/cn/itcast/jdbc1/clob_blob/IMG_0007.jpg");
InputStream in = new FileInputStream(file);
ps.setBinaryStream(1, in, (int) file.length());
ps.executeUpdate();
讀取BLOB
PreparedStatement ps = conn.prepareStatement("select file from big_binary");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
InputStream in = rs.getBinaryStream(1);
// 這個InputStream就是從資料庫中讀取資料的流, 操作這個流來讀取資料
}
相關推薦
jdbc簡介和 crud操作
1、JDBC(Java Data Base Connectivity java資料庫連線)概念: 是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成 DBC是我們使用JAVA程式操作資料庫的工具. JDBC由java.sql和j
linux nftables簡介和基礎操作
語法 用戶態 新規 數據包 name chain 地址 lac 版本 一、什麽是nftables? nftables 是新的數據包分類框架,新的linux防火墻管理程序,旨在替代現存的 {ip,ip6,arp,eb}_tables。簡而言之:它在 Linux 內核版本高於
hibernate中實體類的三種狀態和crud操作
實體類 private int uid; private String name; private String age; private String address; public int getUid() { return uid;
elasticsearch基本索引和CRUD操作、bulk批量操作
ELK包括ElasticSearch(資料儲存、快速查詢)、logstash(日誌蒐集)、kibana(展示ElasticSearch資料的圖形介面)。 4種常用的HTTP請求方法: POST /uri 建立 DELETE /uri/xxx 刪除 P
簡介二:操作系統和集群開源技術研究
pla 設計 成本 期貨 jit cin 虛擬化技術 特性 基礎 作者:王步宙、陳晨 2008年似乎是個有魔力的一年,在這一年裏大西洋兩岸的德國和紐約兩大證券交易所集團幾乎不約而同的啟動了交易系統開源化項目。對於開源項目的動因,有人提出成本論,有人提出是低延遲論,我們認為可
JDBC Update操作返回值和Insert操作返回主鍵
not null rest enc 不同 生成 statement -a AC ret JDBC Update操作返回值 在操作數據庫時,update操作會返回數據庫更新行數,但是在JDBC默認情況下則不會返回數據庫更新行數,這一點有所不同,在實際操作中可能會出現意想不到的
Spring註解配置Mongo及基本CRUD操作簡介
Mongo安裝配置參考基本操作等可參考http://www.runoob.com/mongodb/mongodb-tutorial.html,其中help()方法十分實用,可以不用讓使用者不用記太多方法,如help.collection.help()會顯示集合(相當於傳統資料庫中的的表)的所有方
javaweb:JDBC連線MYSQL資料庫詳解,使用JDBC對資料庫進行CRUD操作以及DAO模式的介紹
JDBC簡介: JDBC全稱為:Java DataBase Connectivity(java資料庫連線)。 SUN公司為了簡化、統一對資料庫的操作,定義了一套Java操作資料庫的規範,稱之為JDBC。 組成JDBC的2個包: 連結:https://pan
Spring--04(Spring的JDBC操作和事務操作)
1.Spring 的 JDBC 的模板 Spring 提供了很多持久層技術的模板類簡化程式設計:  
Hadoop權威指南---HDFS簡介和java API操作
目錄 Hadoop分散式檔案系統 1、HDFS的設計 HDFS的特點 超大檔案,目前已經有PB級資料的Hadoop叢集; 流式資料訪問,一次寫入、多次讀取;
JDBC的五個步驟及基本CRUD操作
使用jdbc對資料庫的crud操作的五個基本步驟: 1、載入驅動 2、建立連線 3、編寫sql 4、預編譯sql 5、返回結果集 具體程式碼示例如下,我使用的是oracle資料庫: 1、建立一個DBUtils工具類 package com.zzy.util;
使用 JDBC 連線資料庫完成 CRUD 操作
JDBC 完成 CRUD 操作總結 準備工作 開發環境和工具 Eclipse、mysql、通過 JDBC 連線 mysql 資料庫時需要的架包 mysql-connector-java。 JDBC 工具類 將獲取連線和釋放資源的方法封裝到一個工具類中,之後在使
Spring整合jdbc及其crud操作即增刪改查
1.工程的座標依賴 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId>
Hibernate實現簡單的CRUD操作和常見類(三)
“兩個蝴蝶飛”特別喜歡"java1234知識分享網"小峰的實用主義,所以本文及其系列文章均是採用實用主義,從專案和程式碼的角度去分析。由於本人經驗有限,嘴皮子不溜,所以學術性,概念性,底層性的知識點暫時不做介紹。文章中有錯誤之處,歡迎拍磚和指點。特別感謝"java1234
JDBC詳解之與mySQL資料庫的連線和基本操作一
JDBC詳解 JDBC詳解 一 JDBC基本操作 MySQL的JDBC驅動包: mysql-connector-java-5.1.3
MyBatis Generator生成的CRUD操作中,insertSelective和insert的區別?
專案需要需要使用MyBatis Generator,generator可生成以下幾種的CURD操作。 1.insert() 2.insertSelective() 3.updateByPrimaryKeySelective() 4.updateByPrimaryKey() 5.s
Spring學習(四)Jdbc連線池交個spring管理和事務操作
一、連線池的配置交給Spring管理 1,新增jar包 2,spring的jdbc連線池配置 <!-- 配置連線池 --> <bean id="dataSource" class="org.spring
JDBC實現修改和刪除操作
工具:Myeclipse(Eclipse): 知識點:如何防止SQL注入攻擊和JDBC中的修改/刪除操作 jar包: commons-collections4-4.0.jar commons-dbcp-1.4.jar commons-pool-1.6.jar Oracle 1
Mongodb對集合(表)和資料的CRUD操作
一、集合(對應資料庫的表) 1、檢視當前庫裡的所有集合 show collections 2、新建集合 顯式建立 db.createCollection("user") 隱式建立 db.user.insert({name:"zhangsan"}) 3、刪除集合 db.user.dorp()
jdbc筆記(一) 使用Statement對單表的CRUD操作
jdbc連線mysql並執行簡單的CRUD的步驟: 1.註冊驅動(需要丟擲/捕獲異常) Class.forName("com.mysql.jdbc.Driver"); 2.建立連線需要丟擲/捕獲異常) connection = DriverManager.getConnection("