<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
JDBC,Java Database Connectivity ,java資料庫連線.是一種執行SQL語句的API,是java中資料庫連線規範,這個API由java.sql.*,javax.sql.*包中的一些類和介面組成,它為Java開發人員運算元據庫提供了一個標準的API,可以為多種關聯式資料庫提供統一存取
jar包下載地址:
1.輸入地址->輸入mysql搜素
2.點選第一個後選擇版本
3.選擇版本和本機mysql大版本相同的 jar包
4.點選下載jar包
5.建立lib包,匯入jar包,直接cv
6.右擊lib->點選Add as Library
此時就解析出了jar包中的內容,我們就可以進行對資料庫據的程式設計了
和資料庫建立連線時,需要用到資料庫,首先建立一個資料庫和一張表然後進行資料庫連線
mysql> desc student; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.01 sec)
jdbc程式設計時用到的資源,必須要匯入jar包才能用
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.*;
使用 DataSource 描述 MySQL 伺服器的位置.
DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setUrl ("jdbc:mysql://127.0.0.1:3306/java_2?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("123456");
url是唯一地址定位符,就是網址
127.0.0.1:資料庫伺服器所在的IP地址,這是個特殊的IP,表示主機自己,環回網址,相當於this. 只要資料庫伺服器和jdbc程式在一臺電腦上都可以使用這個IP :3306是埠號,安裝時預設的,使用IP確定了主機,網路資料包給那個程式是通過埠號來識別出資料庫伺服器的 java_2資料庫名 characterEncoding=utf8字元編碼方式 useSSL=false關閉加密功能
Connection connection = dataSource.getConnection();
要注意使用Java.sql的Connection
控制使用者端給資料庫傳送請求,執行操作
增刪改和查詢稍有不同~
增加操作
構造 SQL 語句. JDBC 運算元據庫, 本質仍然是通過 SQL 來描述資料庫操作
String sql = "insert into student values(001,'張三')"; PreparedStatement statement = connection.prepareStatement(sql); int ret = statement.executeUpdate(); statement.close(); connection.close();
String sql 描述的是sql是什麼樣的
還需要一個特殊的類:
執行是靠PreparedStatement,它會對sql進行一些預處理,解析之類的,之前通過cmd輸入的語句是傳送給伺服器端讓伺服器進行解析
當前資料是寫死的,我們更希望是動態的
我們通過控制檯輸入一些資訊,來運算元據庫
Scanner scanner = new Scanner(System.in); System.out.println("請輸入學號"); int id = scanner.nextInt(); System.out.println("請輸入姓名"); String name = scanner.next(); String sql = "insert into student values(" + id + ",'" + name+ "')"; PreparedStatement statement = connection.prepareStatement(sql); int ret = statement.executeUpdate();
但是這種操作還存在一個問題
這樣的程式碼可讀性很低,另一方面,這個程式碼還容易引起SQL隱碼攻擊
如果輸入這樣的程式碼就會在插入的同時引起很多其他的問題
因此我們提出更靠譜的方案:通過預留位置替換的方法輸入操作資訊
Scanner scanner = new Scanner(System.in); System.out.println("請輸入學號"); int id = scanner.nextInt(); System.out.println("請輸入姓名"); String name = scanner.next(); String sql = "insert into student values(?,?)"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1,id); statement.setString(2,name); int ret = statement.executeUpdate();
注意:這裡的預留位置下標是從1開始的!!
執行增加,刪除,更新三個操作用executeUpdate執行,程式碼和增加的程式碼是相同的
執行查詢操作使用executeQuery
更新操作
也是通過預留位置來操作
Scanner scanner = new Scanner(System.in); System.out.println("請輸入學號"); int id = scanner.nextInt(); System.out.println("請輸入修改的姓名"); String name = scanner.next(); String sql = "update student set name = ? where id = ? "; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1,name); statement.setInt(2,id); int ret = statement.executeUpdate(); statement.close(); connection.close();
資料庫中的結果:
mysql> select*from student; +------+------+ | id | name | +------+------+ | 1 | 張三 | | 2 | 李四 | | 3 | 王五 | | 5 | 趙六 | +------+------+ 4 rows in set (0.00 sec) 更新後: mysql> select*from student; +------+--------+ | id | name | +------+--------+ | 1 | 張三 | | 2 | 李四 | | 3 | wangqi | | 5 | 趙六 | +------+--------+ 4 rows in set (0.00 sec)
刪除操作
Scanner scanner = new Scanner(System.in); System.out.println("請輸入要刪除的學號"); int id = scanner.nextInt(); String sql = "delete from student where id = ? "; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1,id); int ret = statement.executeUpdate(); statement.close(); connection.close();
結果:
mysql> select*from student; +------+------+ | id | name | +------+------+ | 1 | 張三 | | 2 | 李四 | | 5 | 趙六 | +------+------+ 3 rows in set (0.00 sec)
三個操作的程式碼是相同的
執行時給伺服器傳送網路請求
int ret = statement.executeUpdate();
ret返回的是一個整數,表示執行的結果影響到了多少行
查詢操作用到的是
ResultSet ret = statement.executeQuery();
與上面三個操作不同的是:
executeUpdate 只能返回一個 int.
executeQuery 返回的是一個 ResultSet 物件. 可以把這個物件視為是一個 "臨時表"
增刪改返回的是影響的行數,只返回一個整數
查詢的結果集合是一張表,因此比其它幾個操作多一個遍歷,遍歷後才能看到結果
String sql = "select*from student"; PreparedStatement statement = connection.prepareStatement(sql); ResultSet ret = statement.executeQuery(); //遍歷臨時表, 拿到裡面的資料. // resultSet 簡單的當成一個類似於 "迭代器" // next 如果沒有到達末尾, 就是返回 true, 要繼續迴圈. // next 如果到達末尾, 就返回 false, 結束迴圈. while(ret.next()) { int id = ret.getInt("id"); String name = ret.getString("name"); System.out.println("id: "+id+" name: "+name); } ret.close(); statement.close(); connection.close();
獲取哪一列,就用getXXX方法 ,XXX為列的型別
結果:
java有GC即垃圾回收機制,會自動處理申請的記憶體,但是像這種連線的資源還需要我們手動釋放
資源的釋放順序是和建立順序相反的
釋放的順序:先用到的資源後釋放
ret.close(); statement.close(); connection.close();
到此這篇關於IDEA使用JDBC匯入設定jar包連線MySQL資料庫的文章就介紹到這了,更多相關JDBC連線MySQL資料庫內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45