首頁 > Java > Java基礎 > 主體

Java程式開發學習之JDBC與MySQL資料庫

coldplay.xixi
發布: 2021-02-11 10:33:23
轉載
3461 人瀏覽過

Java程式開發學習之JDBC與MySQL資料庫

相關學習推薦:java基礎

一、JDBC連接資料庫的操作

寫時可以封裝在一個類別裡面簡化程式碼。
(1)載入JDBC-MySQL資料庫驅動程式

try {
    Class.forName("com.mysql.cj.jdbc.Driver");}catch (Exception e){ }
登入後複製

(2)連接資料庫

Connection con = null;//声明要连接数据库的对象comString uri = "jdbc:mysql://localhost:3306/数据库名?useSSL=true &characterEncoding=utf-8";	//连接地址String user = "root";	//连接数据库的用户名String password = "123456";	//连接数据库的密码try {
    con = DriverManager.getConnection(uri,user,password);
	//连接代码}catch(SQLException e){ }
登入後複製

(3)編寫操作資料庫中資料的程式碼

#二、查詢操作

1,查詢操作的具體步驟
(1)向資料庫發送SQL語句:

Statement sql;try{
    sql = con.createStatement();}catch (SQLException e){ }
登入後複製

首先聲明SQL語句對象,然後讓已建立的連線物件con呼叫方法createStatement()建立這個SQL語句物件。
(2)處理查詢結果
有了SQL語句物件後,這個物件可以呼叫對應的方法來實現對資料庫中表格的各項操作,其中查詢結果存放在一個ResultSet類別聲明的物件中。即SQL查詢語句對資料庫的查詢操作講放回一個ResultSet對象,ResultSet由「列」(欄位)組織的資料行構成。

rs = sql.executeQuery("select * from 表的名称");//读取表中的所有列,*为通配符rs = sql.executeQuery("select 行1字段名,行2字段名... from 表的名称");//读取表中特定的列
登入後複製

ResultSet物件一次只能看到一行數據,使用next()方法移到下一行。 ResultSet物件可以透過getXxx(int columnIndex)來取得列值和透過傳遞列名getXxx(String columnName)來取得列值。
(3)關閉連線

con.close(); //关闭con所连接的数据库
登入後複製

注意:資料庫與連線物件緊密綁定,應在使用完資料庫再進行關閉操作。

2,控制遊標
結果集的遊標的初始位置在結果集第一行的前面,結果集呼叫next()方法向下(後)移動遊標,移動成功回傳true,移動失敗回傳false。 如果要在結果集中移動並顯示若干筆記錄,必須傳回一個捲動的結果集。方法如下:

Statement stmt = con.createStatement(int type,int concurrency);//获得一个Statement对象,根据参数的值,stmt返回相应类型的结果集:ResultSet re = stmt.executeQuery(SQL语句);type的取值:决定滚动方式:
ResultSet.TYPE_FORWARD_ONLY 结果集的游标只能向下滚动
ResultSet.TYPE_SCROLL_INSENSITIVE 游标可以上下移动,数据库变化时,结果集不变
ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,数据变化时,结果集同步改变
Concurrency取值:决定是否可以用结果集更新数据库
ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表
ResultSet.CONCUR_UPDATABLE 能用结果集更新数据库中的表

滚动查询常用的ResultSet的方法:public boolean previous() 将游标向上移动,当移动到结果集第一行之前时返回falsepublic void beforeFirst() 将游标移动到结果集的初始位置,第一行之前public void afterLast() 将游标移动到结果集的最后一行之后public void first() 将游标移动到第一行public void last() 将游标移动到最后一行public boolean isAfterLast() 判断游标是否在最后一行之后public boolean isBeforeFirst() 判断游标是否在第一行游标之前public boolean isFirst() 判断游标是否指向第一行public boolean isLast() 判断游标是否指向最后一行public int getRow() 得到当前游标所指向的行号,行号从1开始,如果结果集没有行,返回0public boolean absolute(int row) 将游标移动到参数row指定的行(参数取负数即倒数)
登入後複製

(3)條件與排序查詢
where子語句:select 欄位from 顯示where 條件

#
(1)字段值与固定值比较
select * from table where name='张三'(2)字段值在某个区间
select * from table where number>5 and number<10 and name!=&#39;李四&#39;(3)使用某些特殊的日期函数(Data:year-month-day)select * from table where year(表明日期的字段名)<1980 and month(表面日期的字段名)<=10select * from table where year(表明日期的字段名) between 2002 and 2021(4)使用某些特殊的时间函数(hour,minute,second)
select * from timelist where second(表明时间的字段名)=36(5)用操作符like进行模式匹配,使用%代替0个或多个字符,用一个下划线_代替一个字符。
select * from table where name like&#39;%欧%&#39; //查询name字段有“欧”字的记录
登入後複製

order by語句:可結合where語句使用

select * from table order by height
select * from table where name like &#39;%王%&#39; order by name
登入後複製

三、更新、新增和刪除操作

Statement物件呼叫public int executeUpdate(String sqlStatement);透過參數指定的方式對資料庫表中的記錄的更新、新增和刪除操作。

(1)更新
update 表名 set 字段 = 新值 where <条件子句>(2)添加
insert into 表 values (对应具体的记录)(3)删除
delete from 表名 where <条件子句>
登入後複製

四、使用預處理語句

Java提供了更有效率的資料庫操作機制,就是PreparedStatement對象,即預處理語句物件。將SQL語句處理為資料庫底層語句,再傳送給資料庫。
使用萬用字元:對SQL進行預處理時,可以用通配符? 來取代欄位的值,只要在預處理語句執行之前再設定通配符所代表的具體值即可:

String str = "select * from 表名 where 字段1 < ? and 字段2 = ?";PreparedStatement sql = con.prepareStatement(str);sql.setXxx(int parameterIndex,Type x);//该方法设置?代表的值,parameterIndex代表第几个?,x代表要替换的值。
登入後複製

#五、通用查詢

編寫通用查詢類,使用者可以將資料庫名稱、SQL語句傳遞給該類別的對象,那麼該對象就用一個二維數組返回查詢的記錄。
寫通用查詢類別需要知道資料庫表格列(欄位)的名字和數量。常用方法為用結果集ResultSet物件rs呼叫getMetaData()方法傳回一個ResultSetMetaData物件:

ResultSetMetaData metaData = rs.getMetaData();
登入後複製

然後該物件metaData呼叫#getColumnCount()方法既可以傳回rs中列的數目,呼叫getColumnName(int i)就可以傳回結果集rs中第i列的名字。

六、交易

1,事務及處理
交易由一組SQL語句組成。所謂事務處理,是指應用程式保證事務中的SQL語句要麼全部被執行,要麼一個都不被執行。事務處理是保證資料庫中資料完整性與一致性的重要機制。

2,JDBC事務處理
用setAutoCommit(boolean b)方法關閉自動模式:
即關閉SQL語句的即刻生效性,兩個相關聯的操作應該在都執行完畢後才改變資料庫中的資料。方法為在取得sql物件前讓連線物件呼叫此方法:

con.setAutoCommit(false);
登入後複製

用commit()方法處理交易:
關閉自動模式後,讓sql物件提交多條SQL(即相同交易)語句,這些語句不會立即生效,而是直到連線物件呼叫方法後全部生效:

con.commit();
登入後複製

用rollback()方法處理交易失敗:
即撤銷事務所作的動作。在con呼叫commit()方法進行事務處理時,只要有一個SQL語句沒有執行成功,那麼該事務執行失敗,拋出SQLException異常。這時必須讓con呼叫rollback()方法撤銷所有引起資料變化的操作:

con.rollback();
登入後複製

#相關免費學習推薦:##mysql影片教學

以上是Java程式開發學習之JDBC與MySQL資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!