目錄
1、JDBC简介
2、使用JDBC的步骤——第一个JDBC程序
3、DriverManager ——加载数据库驱动
4、数据库URL ——标识数据库的位置
5、Connection ——代表数据库的链接
6、Statement ——向数据库发送SQL语句
7、ResultSet ——代表Sql语句的执行结果
(1) ResultSet提供了对结果集进行滚动的方法:
(2) ResultSet既然用于封装执行结果的,所以该对象提供了用于获取数据的get方法:
8、释放资源 ——释放与数据库进行交互的对象
9、用JDBC对数据库进行CRUD
10、用JDBC的PreparedStatement启动事务使用批处理executeBatch()
1. PreparedStatement使用批处理 executeBatch()
1.1. 不使用executeBatch(),而使用executeUpdate(),速度很慢
1.2. 而使用executeBatch()
2. 启用事务处理
3. 事务和批处理混合使用
11、SQL 注入的防范
12、PreparedStatement
首頁 資料庫 mysql教程 JDBCMYSQL学习笔记(一)JDBC基本使用_MySQL

JDBCMYSQL学习笔记(一)JDBC基本使用_MySQL

Jun 01, 2016 pm 12:58 PM
筆記

1、JDBC简介

SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC。 JDBC全称为:Java Data Base Connectivity(java数据库连接),它主要由接口组成。 组成JDBC的2个包:java.sql javax.sql

开发JDBC应用需要以上2个包的支持外,还需要导入相应JDBC的数据库实现(即数据库驱动)。

\

2、使用JDBC的步骤——第一个JDBC程序

需求:编程从user表中读取数据,并打印在命令行窗口中。
(1) 搭建实验环境 :
a、在mysql中创建一个数据库,并创建user表,同时插入数据到表中。
b、新建一个Java工程,并导入数据库驱动。
(2) 编写程序,在程序中加载数据库驱动

         a、方式一:DriverManager. registerDriver(Driver driver)
 
         b、方式二:Class.forName(“com.mysql.jdbc.Driver”);
登入後複製
(3) 建立连接(Connection)
Connection conn = DriverManager.getConnection(url,user,pass);
登入後複製

(4) 创建用于向数据库发送SQL的Statement对象,并发送sql

         Statement st = conn.createStatement();
 
         ResultSet rs = st.excuteQuery(sql);
登入後複製

(5) 从代表结果集的ResultSet中取出数据,打印到命令行窗口

(6) 断开与数据库的连接,并释放相关资源

dome:

import java.sql.*;

import com.sun.org.apache.regexp.internal.recompile;

public class dome {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws SQLException,ClassNotFoundException{
		// TODO Auto-generated method stub
		
		String url = "jdbc:mysql://localhost:3306/skyfin";
		String username = "root";
		String password = "skyfin";
		//1.加载驱动
		//DriverManager.registerDriver(new com.mysql.jdbc.Driver());

		Class.forName("com.mysql.jdbc.Driver");		//2获取连接
Connection connection = DriverManager.getConnection(url,username,password);
	//3.获取向数据库发sql语句的statament对象
Statement stat = connection.createStatement();
//4.向数据库发送sql,获取数据库返回的结果集
ResultSet rsResultSet = stat.executeQuery("select * from user");
//5.从结果集中获取数据while (rsResultSet.next()) {System.out.println("id = "+ rsResultSet.getObject("id"));System.out.println("name = "+ rsResultSet.getObject("name"));
System.out.println("password = "+ rsResultSet.getObject("password"));}
 //6.释放资源(释放链接)rsResultSet.close();stat.close();connection.close();}}
登入後複製
登入後複製

3、DriverManager ——加载数据库驱动

Jdbc程序中的DriverManager用于加载驱动,并创建与数据库的链接,这个API的常用方法:

    DriverManager.registerDriver(new Driver());
    DriverManager.getConnection(url, user, password);
登入後複製
注意:在实际开发中并不推荐采用registerDriver方法注册驱动。原因有二:
一、查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序注册两次,也就是在内存中会有两个Driver对象。
二、程序依赖mysql的api,脱离mysql的jar包,程序将无法编译,将来程序切换底层数据库将会非常麻烦。
推荐方式:
Class.forName(“com.mysql.jdbc.Driver”);
登入後複製
采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,使程序的灵活性更高。
同样,在开发中也不建议采用具体的驱动类型指向getConnection方法返回的connection对象。

4、数据库URL ——标识数据库的位置

URL用于标识数据库的位置,程序员通过URL地址告诉JDBC程序连接哪个数据库,

MySql 数据库的URL写法为: jdbc:mysql:[]//localhost:3306/test ?参数名:参数值
\
常用数据库URL地址的写法:
Oracle:jdbc:oracle:thin:@localhost:1521:skyfin
SqlServer:jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=skyfin
MySql:jdbc:mysql://localhost:3306/skyfin
Mysql的url地址的简写形式: jdbc:mysql://skyfin
常用属性:useUnicode=true&characterEncoding=UTF-8

jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk&autoReconnect=true&failOverReadOnly
登入後複製

5、Connection ——代表数据库的链接

Jdbc程序中的Connection,它用于代表数据库的链接。Connection 是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过Connection 对象完成的,这个对象的常用方法:
(1) createStatement():创建向数据库发送sql的statement对象。
(2) prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
(3) prepareCall(sql):创建执行存储过程的callableStatement对象。
(4) setAutoCommit(boolean autoCommit):设置事务是否自动提交。
(5) commit() :在链接上提交事务。
(6) rollback() :在此链接上回滚事务。

6、Statement ——向数据库发送SQL语句

Jdbc程序中的Statement对象用于向数据库发送SQL语句, Statement对象常用方法:
(1) executeQuery(String sql) :用于向数据库发送查询语句。
(2) executeUpdate(String sql):用于向数据库发送insert、update或delete语句
(3) execute(String sql):用于向数据库发送任意sql语句
(4) addBatch(String sql) :把多条sql语句放到一个批处理中。
(5) executeBatch():向数据库发送一批sql语句执行。
(6) clearBatch() :清空此 Statement 对象的当前 SQL 命令列表。

7、ResultSet ——代表Sql语句的执行结果

Jdbc程序中的ResultSet用于代表Sql语句的执行结果。Resultset封装执行结果时,采用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。

(1) ResultSet提供了对结果集进行滚动的方法:

a、next():移动到下一行
b、Previous():移动到前一行
c、absolute(int row):移动到指定行
d、beforeFirst():移动resultSet的最前面。
e、 afterLast() :移动到resultSet的最后面。

(2) ResultSet既然用于封装执行结果的,所以该对象提供了用于获取数据的get方法:

获取任意类型的数据
getObject(int index)
getObject(string columnName)
获取指定类型的数据,例如:
getString(int index)
getString(String columnName)
其他获取指定类型数据的方法见下表:
常用数据类型转换表:

\

8、释放资源 ——释放与数据库进行交互的对象

Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, Statement和Connection对象。
特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。

9、用JDBC对数据库进行CRUD

jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个int整数(即增删改语句导致了数据库几行数据发生了变化)。
Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。

	public static void main(String[] args) throws SQLException,ClassNotFoundException{
		// TODO Auto-generated method stub
		
		String url = "jdbc:mysql://localhost:3306/skyfin";
		String username = "root";
		String password = "skyfin";
		//DriverManager.registerDriver(new com.mysql.jdbc.Driver());

		Class.forName("com.mysql.jdbc.Driver");

		Connection  connection = DriverManager.getConnection(url,username,password);
		
		Statement stat = connection.createStatement();
		
		/*
		 * 执行查找操作
		 */
		ResultSet rsResultSet = stat.executeQuery("select * from user");
		
		while (rsResultSet.next()) {
			System.out.println("id = "+ rsResultSet.getObject("id"));
			System.out.println("name = "+ rsResultSet.getObject("name"));
			System.out.println("password = "+ rsResultSet.getObject("password"));
			
		}

		
		/*
		 * 执行插入操作
		 */
		String sql = "insert into user(id,name,password) value(6,"+"'staff'"+","+"'staff'"+")";
		System.out.println(sql);
		int statentnum = stat.executeUpdate(sql);
		if (statentnum>0) {
			System.out.println("insert ok");
		}
		
		/*
		 * 执行更新操作
		 */
		sql = "update user set name = 'skstaff' where name = 'staff'";
		System.out.println(sql);
		statentnum = stat.executeUpdate(sql);
		if (statentnum>0) {
			System.out.println("update ok");
		}
		
		/*
		 * 执行删除操作
		 */
		sql = "delete from user where name = 'skstaff'";
		System.out.println(sql);
		statentnum = stat.executeUpdate(sql);
		if (statentnum>0) {
			System.out.println("delete ok");
		}
		/*
		 * 资源的释放
		 */
		rsResultSet.close();
		stat.close();
		connection.close();
	}
登入後複製

10、用JDBC的PreparedStatement启动事务使用批处理executeBatch()

JDBC使用MySQL处理大数据的时候,自然而然的想到要使用批处理,
普通的执行过程是:每处理一条数据,就访问一次数据库;
而批处理是:累积到一定数量,再一次性提交到数据库,减少了与数据库的交互次数,所以效率会大大提高
至于事务:事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功,默认是关闭事务的。

1. PreparedStatement使用批处理 executeBatch()

1.1. 不使用executeBatch(),而使用executeUpdate(),速度很慢

	public static void main(String[] args) throws  SQLException,ClassNotFoundException{
		// TODO Auto-generated method stub
		
		String url = "jdbc:mysql://localhost:3306/skyfin";
		String username = "root";
		String password = "skyfin";
		//DriverManager.registerDriver(new com.mysql.jdbc.Driver());

		Class.forName("com.mysql.jdbc.Driver");

		Connection  connection = DriverManager.getConnection(url,username,password);
		String sql = "insert into user1(id,name) value(?,?)";
		PreparedStatement preparedStatement = connection.prepareStatement(sql);
		for(int i = 0;i<10000;i++){
			preparedStatement.setInt(1, i);
			preparedStatement.setString(2, "skyfin"+i);
			preparedStatement.executeUpdate();
		}
	}
登入後複製

1.2. 而使用executeBatch()

	public static void main(String[] args) throws  SQLException,ClassNotFoundException{
		// TODO Auto-generated method stub
		
		String url = "jdbc:mysql://localhost:3306/skyfin";
		String username = "root";
		String password = "skyfin";
		//DriverManager.registerDriver(new com.mysql.jdbc.Driver());

		Class.forName("com.mysql.jdbc.Driver");

		Connection  connection = DriverManager.getConnection(url,username,password);
		String sql = "insert into user1(id,name) value(?,?)";
		PreparedStatement preparedStatement = connection.prepareStatement(sql);
		for(int i = 0;i<10000;i++){
			preparedStatement.setInt(1, i);
			preparedStatement.setString(2, "skyfin"+i);
			//preparedStatement.executeUpdate();
			/*
			 * 使用executeBatch()
			 */
			preparedStatement.addBatch();
		}
		//执行批处理
		preparedStatement.executeBatch();
	}
登入後複製

注意:1. 如果使用了 addBatch() -> executeBatch() 还是很慢,那就得使用到这个参数了rewriteBatchedStatements=true (启动批处理操作)
在数据库连接URL后面加上这个参数: String dbUrl = "jdbc:mysql://localhost:3306/User? rewriteBatchedStatements=true";
2. 在代码中,pstmt的位置不能乱放,必须放在循环体外

2. 启用事务处理

	public static void main(String[] args) throws  SQLException,ClassNotFoundException{
		// TODO Auto-generated method stub
		
		String url = "jdbc:mysql://localhost:3306/skyfin";
		String username = "root";
		String password = "skyfin";
		//DriverManager.registerDriver(new com.mysql.jdbc.Driver());

		Class.forName("com.mysql.jdbc.Driver");

		Connection  connection = DriverManager.getConnection(url,username,password);
		//关闭自动提交
		connection.setAutoCommit(false);
		String sql = "update user1 set name = ?where id = ?";
		PreparedStatement preparedStatement = connection.prepareStatement(sql);
		for(int i = 0;i<10000;i++){
			
			preparedStatement.setString(1, "loco"+i);
			preparedStatement.setInt(2, i);
			
			//preparedStatement.executeUpdate();
			/*
			 * 使用executeBatch()
			 */
			preparedStatement.addBatch();
		}
		//执行批处理
		preparedStatement.executeBatch();
		preparedStatement.close();
		//执行完后手动提交事务
		connection.commit();
		//打开自动提交
		connection.setAutoCommit(true);
		connection.close();
	}
登入後複製

3. 事务和批处理混合使用

	public static void main(String[] args) throws  SQLException,ClassNotFoundException{
		// TODO Auto-generated method stub
		
		String url = "jdbc:mysql://localhost:3306/skyfin";
		String username = "root";
		String password = "skyfin";
		//DriverManager.registerDriver(new com.mysql.jdbc.Driver());

		Class.forName("com.mysql.jdbc.Driver");

		Connection  connection = DriverManager.getConnection(url,username,password);
		//关闭自动提交
		connection.setAutoCommit(false);
		String sql = "update user1 set name = ?where id = ?";
		PreparedStatement preparedStatement = connection.prepareStatement(sql);
		for(int i = 0;i<10000;i++){
			
			preparedStatement.setString(1, "skyfin"+i);
			preparedStatement.setInt(2, i);
			
			//preparedStatement.executeUpdate();
			/*
			 * 使用executeBatch()
			 */
			if (i>0&&i%500 == 0) {
				preparedStatement.executeBatch();
				//如果不想出错后,完全没保留数据,则可以没执行一次提交一次,但得保证数据不会重复
				connection.commit();
			}
			preparedStatement.addBatch();
		}
		//执行批处理
		preparedStatement.executeBatch();
		preparedStatement.close();
		//执行完后手动提交事务
		connection.commit();
		//打开自动提交
		connection.setAutoCommit(true);
		connection.close();
	}
登入後複製

11、SQL 注入的防范

SQL 注入是用户利用某些系统没有对输入数据进行充分的检查,从而进行恶意破坏的行为。
1、statement存在sql注入攻击问题,例如登陆用户名采用' or 1=1 or username=‘
2、对于防范 SQL 注入,可以采用PreparedStatement取代Statement。
备注:本例只是最基本的防止SQL注入方式,其他情况还请查阅资料。

12、PreparedStatement

PreperedStatement是Statement的孩子,它的实例对象可以通过调用Connection.preparedStatement()方法获得,相对于Statement对象而言的优势:
(1) 防止SQL注入:PreperedStatement可以避免SQL注入的问题。
(2) 预编译SQL语句:Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement 可对SQL进行预编译,从而提高数据库的执行效率。
(3) 使用占位符简化语句:并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。 (例如多次循环插入数据)

public List<customer> getAll(){
 
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        try{
              conn = JdbcUtils.getConnection();
              String sql = "select * from customer";
              st = conn.prepareStatement(sql);
              rs = st.executeQuery();
              List list = new ArrayList();
              while(rs.next()){
 
                    Customer c = new Customer();
 
                    c.setBirthday(rs.getDate("birthday"));
 
                    c.setCellphone(rs.getString("cellphone"));
 
                    c.setDescription(rs.getString("description"));
 
                    c.setEmail(rs.getString("email"));
 
                    c.setGender(rs.getString("gender"));
 
                    c.setId(rs.getString("id"));
 
                    c.setName(rs.getString("name"));
 
                    c.setPreference(rs.getString("preference"));
 
                    c.setType(rs.getString("type"));
 
                    list.add(c);
              }
              return list;
        }catch (Exception e) {
              throw new DaoException(e);
        }finally{
              JdbcUtils.release(conn, st, rs);
        }
  }
 </customer>
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

小紅書筆記怎麼刪除 小紅書筆記怎麼刪除 Mar 21, 2024 pm 08:12 PM

小紅書筆記怎麼刪除?在小紅書APP中是可以編輯筆記的,多數的用戶不知道小紅書筆記如何的刪除,接下來就是小編為用戶帶來的小紅書筆記刪除方法圖文教程,有興趣的用戶快來一起看看吧!小紅書使用教學小紅書筆記怎麼刪除1、先打開小紅書APP進入到主頁面,選擇右下角【我】進入到專區;2、之後在我的專區,點擊下圖所示的筆記頁面,選擇要刪除的筆記;3、進入到筆記頁面,右上角【三個點】;4、最後下方會展開功能欄,點選【刪除】即可完成。

小紅書刪除的筆記能恢復嗎 小紅書刪除的筆記能恢復嗎 Oct 31, 2023 pm 05:36 PM

小紅書刪除的筆記不能恢復。小紅書作為知識分享和購物平台,為使用者提供了記錄筆記和收藏有用資訊的功能。根據小紅書的官方說明,已經刪除的筆記是無法恢復的。小紅書平台並沒有提供專門的筆記恢復功能。這意味著,一旦在小紅書中刪除了筆記,無論是不小心誤刪還是其他原因,一般情況下是無法從平台上找回被刪除的內容的。如果遇到特殊情況,可以嘗試聯絡小紅書的客服團隊,看是否能夠協助解決問題。

小紅書發布過的筆記不見了怎麼辦?它剛發的筆記搜不到的原因是什麼? 小紅書發布過的筆記不見了怎麼辦?它剛發的筆記搜不到的原因是什麼? Mar 21, 2024 pm 09:30 PM

作為一名小紅書的用戶,我們都曾經遇到過發布過的筆記突然不見了的情況,這無疑讓人感到困惑和擔憂。在這種情況下,我們該怎麼辦呢?本文將圍繞著「小紅書發布過的筆記不見了怎麼辦」這個主題,為你詳細解答。一、小紅書發布過的筆記不見了怎麼辦?首先,不要驚慌。如果你發現筆記不見了,保持冷靜是關鍵,不要慌張。這可能是由於平台系統故障或操作失誤引起的。檢查發布記錄很簡單。只要打開小紅書App,點擊“我”→“發布”→“所有發布”,就可以查看自己的發布記錄。在這裡,你可以輕鬆找到之前發布的筆記。 3.重新發布。如果找到了之

如何在最新的iOS 17系統中連接iPhone上的Apple Notes 如何在最新的iOS 17系統中連接iPhone上的Apple Notes Sep 22, 2023 pm 05:01 PM

使用新增連結功能在iPhone上連結AppleNotes。筆記:如果您已安裝iOS17,則只能在iPhone上的AppleNotes之間建立連結。在iPhone上開啟「備忘錄」應用程式。現在,打開要在其中添加連結的註釋。您也可以選擇建立新備忘錄。點擊螢幕上的任何位置。這將向您顯示一個選單。點擊右側的箭頭以查看“新增連結”選項。點擊它。現在,您可以鍵入註解的名稱或網頁URL。然後,點擊右上角的完成,新增的連結將出現在筆記中。如果要添加指向某個單字的鏈接,只需雙擊該單字即可將其選中,選擇“添加鏈接”並按

小紅書怎麼在筆記中加入商品連結 小紅書在筆記中加入商品連結教學 小紅書怎麼在筆記中加入商品連結 小紅書在筆記中加入商品連結教學 Mar 12, 2024 am 10:40 AM

小紅書怎麼在筆記中添加商品連結?在小紅書這款app中用戶不僅可以瀏覽各種內容還可以進行購物,所以這款app中關於購物推薦、好物分享的內容是非常多的,如果小夥伴在這款app也是一個達人的話,也可以分享一些購物經驗,找到商家進行合作,在筆記中添加連結之類的,很多人都願意使用這款app購物,因為不僅方便,而且有很多達人會進行一些推薦,可以一邊瀏覽有趣內容,一邊看看有沒有適合自己的衣服商品。一起看看如何在筆記中添加商品連結吧!小紅書筆記添加商品連結方法  在手機桌面上開啟app。  在app首頁點擊

小紅書發筆記教學怎麼弄?它發布筆記可以屏蔽人嗎? 小紅書發筆記教學怎麼弄?它發布筆記可以屏蔽人嗎? Mar 25, 2024 pm 03:20 PM

小紅書作為一個生活風格分享平台,涵蓋了美食、旅行、美妝等各個領域的筆記。許多用戶希望在小紅書上分享自己的筆記,但卻不清楚如何操作。在這篇文章中,我們將詳細介紹小紅書發布筆記的流程,並探討如何在平台上封鎖特定使用者。一、小紅書發布筆記教學怎麼弄? 1.註冊登入:首先,需要在手機上下載小紅書APP,並完成註冊登入。在個人中心完善個人資料是很重要的。透過上傳個人資料、填寫暱稱和個人簡介,可以讓其他使用者更容易了解你的訊息,也能幫助他們更好地關注你的筆記。 3.選擇發布頻道:在首頁下方,點選「發筆記」按鈕,選擇你想

在 iPhone 的 Notes 應用程式中掃描列印和手寫筆記 在 iPhone 的 Notes 應用程式中掃描列印和手寫筆記 Nov 29, 2023 pm 11:19 PM

2022年,Apple為iPhone和iPad上的Notes應用程式添加了一項新功能,可讓您快速掃描列印或手寫文字並將其儲存為數位文字格式。繼續閱讀以了解其工作原理。在早期版本的iOS和iPadOS上,將文字掃描到Apple的Notes應用程式中需要點擊筆記的文字字段,然後點擊彈出式選單中的「即時文字」選項。然而,Apple在2022年使現實世界的筆記數位化變得更加容易。以下步驟向您展示如何在執行iOS15.4或iPadOS15.4及更高版本的裝置上完成此操作。在iPhone或iPad上,打開“

如何在iPhone上恢復已刪除的筆記 如何在iPhone上恢復已刪除的筆記 Jul 14, 2023 pm 07:25 PM

大多數人會記下所有內容,包括食譜、生日、歌詞等。在他們的iPhone的筆記應用程式上。但是許多iPhone用戶報告說,他們錯誤地刪除了iPhone上非常重要的筆記,現在他們非常緊張和沮喪。他們不知道如何在iPhone上恢復它。我們對此事進行了大量研究,並找到了兩種從iPhone恢復已刪除筆記的方法。在本文中,我們將解釋這兩種方法,您可以使用它們輕鬆取回已刪除的筆記。如何透過筆記應用程式恢復已刪除的筆記步驟1:您應該先從iPhone上的主畫面啟動Notes應用程式。第2步:啟動Notes應用程式

See all articles