MySQL -- JDBC

1、JDBC是什么:

是SUN公司制定的一套接口(interface)。接口都有調用者和實現者。面向接口調用、面向接口寫實現類,這都屬于面向接口編程。

2、在使用JDBC的六個步驟:
1.注冊驅動(告訴Java程序,即將連接的是哪個品牌的數據庫)2.獲取連接(表示JVM的進程和數據庫進程之間的通道打開了,這屬于進程之間的通信,使用完后記得關閉通道)。3.獲取數據庫操作對象(專門執行sql語句的對象)4.執行SQL語句(DQL,DML…)5.處理查詢結果集 (只有當第四步執行的是select語句的時候,才有本步)6.釋放資源(使用完資源后一定要關閉資源,Java和數據庫之間屬于進程間的通信,開啟之后一定要記得關閉)
3、JDBC的模糊查詢:
import com.shujia.wyh.utils.MySqlTool;import java.sql.PreparedStatement;
import java.sql.ResultSet;/*模糊查詢*/
public class JDBCDemo7 {public static void main(String[] args) throws Exception {String sql = "select ename from emp where ename like ?";PreparedStatement statement = MySqlTool.getStatement(sql);statement.setString(1, "%A%");ResultSet resultSet = statement.executeQuery();while (resultSet.next()){String name = resultSet.getString(1);System.out.println(name);}}
}

在使用maven連接mysql的時候,需要在poml文件中添加依賴:

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
</dependency>
?4、JDBC連接MySQL
/*1.注冊驅動(告訴Java程序,即將連接的是哪個品牌的數據庫)2.獲取連接(表示JVM的進程和數據庫進程之間的通道打開了,這屬于進程之間的通信,使用完后記得關閉通道)。3.獲取數據庫操作對象(專門執行sql語句的對象)4.執行SQL語句(DQL,DML…)5.處理查詢結果集 (只有當第四步執行的是select語句的時候,才有本步)6.釋放資源(使用完資源后一定要關閉資源,Java和數據庫之間屬于進程間的通信,開啟之后一定要記得關閉)*/import com.mysql.jdbc.Driver;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class JDBCDemo1 {public static void main(String[] args) throws Exception{//第一種連接方式// 1.注冊驅動(告訴Java程序,即將連接的是哪個品牌的數據庫)// jdk幫助文檔中提供了一個類讓我們去注冊驅動 DriverManager//但是通過觀察后發現,DriverManager類中并沒有構造方法,就意味著無法創建對象//但是沒關系,我們又觀察發現,該類中的方法都是靜態的,就意味著可以通過DriverManager類直接調用//靜態方法注冊驅動:static void registerDriver(Driver driver) 注冊與給定的驅動程序 DriverManager 。//通過觀察后又發現,registerDriver方法中需要傳入一個實現了java.sql.Driver接口的實現類//而恰好我們引入的mysql驅動包中就有一個類實現了java.sql.Driver接口//mysql驅動包中正好有一個類Driver實現了java.sql.Driver的接口DriverManager.registerDriver(new Driver());//2.獲取連接(表示JVM的進程和數據庫進程之間的通道打開了,這屬于進程之間的通信,使用完后記得關閉通道)。//static Connection getConnection(String url, String user, String password)//嘗試建立與給定數據庫URL的連接。/*** url: 統一資源定位符*      http/https: 都是從網絡中請求資源*      jdbc:mysql: 是java連接mysql數據庫的url前綴*      請求連接mysql數據庫的ip地址:192.168.254.100*      端口號:3306 告訴連接驅動我們連接的是mysql服務*      告訴你要操作的數據庫名:bigdata25*      useUnicode=True&characterEncoding=utf8** user: 登錄mysql數據庫的用戶名 root** password: 登錄mysql數據庫的密碼 123456*///mysql5.7之后,不建議用戶直接與mysql服務連接,中間會有一個SSL令牌校驗String url = "jdbc:mysql://192.168.254.100:3306/bigdata25?useUnicode=True&characterEncoding=utf8&useSSL=false";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);System.out.println("=============數據庫連接成功:"+conn);//3.獲取數據庫操作對象(專門執行sql語句的對象)Statement statement = conn.createStatement();//4.執行SQL語句(DQL,DML…)/***  在JDBC中 它將查詢單獨封裝了一個方法,而其他的增刪改單獨一個方法**  用于查詢的方法*  ResultSet executeQuery(String sql) 執行給定的SQL語句,該語句返回單個 ResultSet對象。**  用戶增刪改的方法* int executeUpdate(String sql) 執行給定的SQL語句,這可能是 INSERT , UPDATE ,或 DELETE語句,* 或者不返回任何內容,如SQL DDL語句的SQL語句。*///增加
//        String sql = "insert into student values('110','洪文霽','男',18,'95033')";
//        int i = statement.executeUpdate(sql);
//        if(i==1){
//            System.out.println("數據添加成功!。。。");
//        }else {
//            System.out.println("數據添加失敗!!");
//        }//刪除
//        String sql2 = "delete from student where sno='110'";
//        int i1 = statement.executeUpdate(sql2);
//        if(i1==1){
//            System.out.println("數據刪除成功!。。。");
//        }else {
//            System.out.println("數據刪除失敗!!");
//        }//修改String sql3 = "update student set sage=19 where sno='110'";int i = statement.executeUpdate(sql3);if(i==1){System.out.println("數據修改成功!。。。");}else {System.out.println("數據修改失敗!!");}//6.釋放資源(使用完資源后一定要關閉資源,Java和數據庫之間屬于進程間的通信,開啟之后一定要記得關閉)conn.close();}
}

第二種連接的方式:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;/*回顧一下,使用java操作數據庫的6步1、注冊驅動 我們上午學習的注冊驅動是第一種方式借助于DriverManager類2、建立連接3、獲取操作數據庫的對象4、執行sql5、如果第四步是查詢操作,分析查詢的結果集6、釋放資源,關閉連接*/
public class JDBCDemo2 {public static void main(String[] args) throws Exception {/***  上午呢,我們說到驅動包的時候,原本是java自己提供的一系列接口,然后不同的數據庫廠商去實現這些接口*  最終提供了一個驅動包給到開發者,然后開發者拿到這個驅動包使用里面的類連接或操作數據庫**  上午的注冊驅動方式,是直接實例化mysql驅動包中的Driver類,但是我們今后使用java不一定只是連接mysql,還有可能操作redis等其他的數據庫*  實際上我們最終是根據驅動包中的實現類路徑來找到這個實現類的*  能否使用傳路徑的方式,注冊驅動呢?**  第二種注冊驅動的方式:驅動包中的類都是class文件,我們如果能夠直接定位到實現類也可以*  使用反射的方式,定位到實現類,將實現類加載到內存*  Class.forName("com.mysql.jdbc.Driver")*/Class.forName("com.mysql.jdbc.Driver");//2.獲取連接(表示JVM的進程和數據庫進程之間的通道打開了,這屬于進程之間的通信,使用完后記得關閉通道)。//mysql5.7之后,不建議用戶直接與mysql服務連接,中間會有一個SSL令牌校驗String url = "jdbc:mysql://192.168.254.100:3306/bigdata25?useUnicode=True&characterEncoding=utf8&useSSL=false";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);System.out.println("=============數據庫連接成功:"+conn);//3.獲取數據庫操作對象(專門執行sql語句的對象)Statement statement = conn.createStatement();//4.執行SQL語句(DQL,DML…)//修改String sql3 = "update student set sage=20 where sno='110'";int i = statement.executeUpdate(sql3);if(i==1){System.out.println("數據修改成功!。。。");}else {System.out.println("數據修改失敗!!");}//6.釋放資源(使用完資源后一定要關閉資源,Java和數據庫之間屬于進程間的通信,開啟之后一定要記得關閉)conn.close();}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class JDBCDemo08 {public static void main(String[] args) throws Exception{//建立連接:需要指定用戶的url地址和用戶名和密碼Connection conn = DriverManager.getConnection("jdbc:mysql://master/trip","root","123456");//獲取mysql的操作對象Statement statement = conn.createStatement();String sql = "select * from activity  ";//執行sql語句:ResultSet resultSet = statement.executeQuery(sql);//獲取里面的數據,并打印在控制臺中,下表是從1開始的。while(resultSet.next()){int id = resultSet.getInt(1);String cid = resultSet.getString(2);String name = resultSet.getString(3);System.out.println(id+  "\t" + cid + name);}
conn.close();}
}
5、悲觀鎖和樂觀鎖的概念

事務1–>讀取到版本號1.1

事務2—>讀取到版本號1.1

其中事務1先修改了,修改之后看了版本號是1.1 ,于是提交修改的數據,將版本號修改為1.2 其中事務2后修改的,修改之后準備提交的時候,發現版本號是1.2 ,和它最初讀的版本號不一致。回滾。

悲觀鎖:事務必須排隊執行。數據鎖住了,不允許并發。 (行級鎖: select后面添加for update )

樂觀鎖:支持并發,事務也不需要排隊,只不過需要一個版本號。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163521.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163521.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

業務系統上云后,如何滿足員工移動辦公快速訪問業務系統的需求?

在企業業務上云的大趨勢下&#xff0c;SaaS應用、云端辦公協同工具等多種遠程辦公應用系統開始大規模普及&#xff0c;企業員工可以隨時隨地訪問云上業務數據。然而現實情況卻十分“打臉”&#xff0c;企業隨時隨地要訪問云上業務的需求越迫切&#xff0c;問題就越大。由于多種…

算法通關村第十二關|白銀|字符串經典基礎面試題

1.反轉問題 1.1 反轉字符串 原題&#xff1a;力扣344. 要求原地修改。 public void reverseString(char[] s) {if (s null || s.length() 0) {return;}int n s.length;for (int left 0, right n - 1; left < right; left, right--) {char temp s[left];s[left] s…

小程序訂閱消息

wx.requestSubscribeMessage({tmplIds: [2IdqlWrqSbjAurzIuW8imeK-ftS8gbhYdZ0icdE],success(res) {console.log(res);// 處理用戶授權結果},fail(err) {console.error(err);// 處理授權請求失敗}});

白楊SEO:2B企業營銷是什么?當下主流的短視頻直播平臺有哪些?企業營銷要做短視頻直播選哪個平臺更好?

今天白楊SEO就正式來講講2B企業營銷選擇哪個短視頻直播平臺更好&#xff1f; 圖片在公眾號&#xff1a;白楊SEO上看。 文章大綱提前看&#xff1a; 1、先說說2B企業營銷是什么&#xff1f; 2、當下主流的短視頻直播平臺有哪些&#xff1f; 3、2B企業營銷要做短視頻直播選哪…

重磅!1區、60年老牌期刊被踢?共5本被剔除!11月SCIE/SSCI期刊目錄更新!

期刊動態&#xff1a;2023年11月SCI、SSCI期刊目錄更新 2023年11月20日&#xff0c;科睿唯安更新了WOS期刊目錄&#xff0c;繼上次10月WOS期刊目錄剔除7本SCIE&SSCI期刊之后&#xff0c;此次11月更新又有5本期刊發生變動&#xff0c;其中有4本SCIE期刊被剔除&#xff0c;1…

Postgresql根據兩表相同字段更新其中一個表的其他數據

有兩個表 table1&#xff08;id,pcode,pname,type&#xff09; 初始數據只有id、pcode&#xff0c;pname、type為空table2&#xff08;id,pcode,pname,type&#xff09; 根據table1和table的相同字段pcode&#xff0c;用table2的數據更新table1的pname和type字段。 例如&…

微信運營神器:從群發到批量添加,讓你的微信營銷更輕松

在這個數字化時代&#xff0c;微信已經成為了我們生活中不可或缺的一部分。對于許多企業和個人來說&#xff0c;微信營銷也是非常重要的一部分。但是&#xff0c;微信營銷并不是一件容易的事情&#xff0c;需要花費大量的時間和精力。為了解決這個問題&#xff0c;今天我們將向…

Linux本地MinIO存儲服務遠程調用上傳文件

&#x1f525;博客主頁&#xff1a; 小羊失眠啦. &#x1f3a5;系列專欄&#xff1a;《C語言》 《數據結構》 《Linux》《Cpolar》 ??感謝大家點贊&#x1f44d;收藏?評論?? 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;…

淘寶返利APP草柴如何綁定淘寶賬號?

草柴APP是一款淘寶、天貓、京東大額優惠券領取及購物返利省錢工具。通過草柴APP綁定淘寶賬號&#xff0c;可領取淘寶大額內部隱藏優惠券&#xff0c;領取成功再購物可享券后價優惠&#xff0c;確認收貨后可獲得淘寶返利。 淘寶返利APP草柴如何綁定淘寶賬號&#xff1f; 1、手…

Docker 快速搭建 Gitlab 服務

linux環境&#xff1a; 使用 vim 編輯 hosts 文件&#xff1a; vim /etc/hosts按 I 進入編輯模式&#xff0c;在文件末行追加上虛擬機的 IP 和要設置的域名&#xff1a; 192.168.1.17 gitlab.kunwu.toplwindows環境&#xff1a; Windows 系統的 hosts 文件位于 C:\Windows\S…

萬賓科技智能井蓋傳感器效果,特點有哪些?

現在城市發展越來越好&#xff0c;對基礎設施的改造越來越多&#xff0c;比如修路搭橋、整改生態等都是為民服務的好工程。平時走在路上我們享受著平整的路面&#xff0c;井然有序的交通也為我們帶來很大的方便。但是一個又一個的井蓋看起來無關緊要&#xff0c;實際上如果路上…

Doris的編譯與安裝(二)

安裝 Doris&#xff0c;需要先通過源碼編譯&#xff0c;主要有兩種方式&#xff1a; 使用 Docker 開發鏡像編譯&#xff08;推薦&#xff09;、直接編譯。 直接編譯的方式&#xff0c;可以參考官網&#xff1a;https://doris.apache.org/zh-CN/installing/compilation.html …

投標文件的注意事項

一、檢查標書 1.1有時候標書需要從別的地方復制黏貼文件&#xff0c;記住復制內容可以&#xff0c;但是不要復制“落款和時間”的格式&#xff0c;落款和時間的格式借鑒你的招標文件中給響應文件格式的落款和時間&#xff0c;切記&#xff01; 1.2檢查標書是否有空頁&#xf…

數據科學導論——數據預處理

第1關:引言-根深之樹不怯風折,泉深之水不會涸竭 第2關:數據清理-查漏補缺 import numpy as np import pandas as pd import matplotlib.pyplot as plt def student():train = pd.read_csv(Task1/diabetes_null.csv, na_values=[#NAME?])train[Insulin] = train[Insulin].f…

maxwell采集數據到kafka報錯

問題&#xff1a; 啟動maxwell后出現數據更新后就出現以下報錯。 13:29:14,727 ERROR MaxwellKafkaProducer - TimeoutException Position[BinlogPosition[binlog.000002:12215591], lastHeartbeat1700717043797] -- maxWellData: medical:consultation:[(id,212)] 13:29:14,7…

Raptor安裝

Raptor官網:https://raptor.martincarlisle.com/ 進入官網后&#xff0c;下拉找到 Download RAPTOR&#xff0c;windows系統的選擇Windows Users 下載完成后打開&#xff0c;選擇“next” 修改一下路徑&#xff0c;不要放到C: 繼續next 完結撒花

vue3的單組件的編寫(三)【響應式 API 之 toRef 與 toRefs】

響應式 API 之 toRef 與 toRefs 前面講了 ref 和 reactive 這兩種響應式API &#xff0c;為了方便開發者使用&#xff0c;vue3 還出了兩個用來 reactive 轉換為 ref 的API&#xff0c;分別是 toRef 和 toRefs 。 &#x1f308;什么是toRef 與 toRefs 這兩個API看拼寫能猜到&…

css漸變詳解(重復性線性漸變、徑向漸變、重復性徑向漸變的使用)

目錄 線性漸變 重復性線性漸變 徑向漸變 重復性徑向漸變的使用 線性漸變 線性漸變是向下、向上、向左、向右、對角方向的顏色漸變。 其語法格式為&#xff1a; background-image: linear-gradient(side-or-corner|angle, linear-color-stop); 參數說明如下&#xff1a; …

物聯網網關在智慧農業行業的應用案例

物聯網網關在智慧農業行業的應用案例 隨著科技的發展和普及&#xff0c;智慧農業已經成為了農業領域的一個重要趨勢。在智慧農業中&#xff0c;物聯網網關是一個非常重要的組成部分&#xff0c;它能夠實現對農業設備和環境的實時監控和控制&#xff0c;從而提高農業生產效率和…

服務器不備案的影響

服務器不備案的影響 不備案&#xff0c;不能解析域名。 但凡你的域名綁定到的是國內地址&#xff0c;你不備案&#xff0c;這個域名解析未來就可能會失效。 &#xff08;你借用的其它網站的子域名情況除外&#xff0c;因為他們的網站本身主域名有可能已經備案。&#xff09; …