Visual-Basic第8章數(shù)據(jù)庫應(yīng)用課件_第1頁
Visual-Basic第8章數(shù)據(jù)庫應(yīng)用課件_第2頁
Visual-Basic第8章數(shù)據(jù)庫應(yīng)用課件_第3頁
Visual-Basic第8章數(shù)據(jù)庫應(yīng)用課件_第4頁
Visual-Basic第8章數(shù)據(jù)庫應(yīng)用課件_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第8章 數(shù)據(jù)庫應(yīng)用 在Visual Basic的應(yīng)用領(lǐng)域中,以數(shù)據(jù)庫的應(yīng)用最為廣泛,也最為復(fù)雜。本章主要介紹Visual Basic訪問數(shù)據(jù)庫的基本方法如可視化數(shù)據(jù)管理器、數(shù)據(jù)訪問接口,多種數(shù)據(jù)綁定控件等。8.1 數(shù)據(jù)庫的概念數(shù)據(jù)庫 在現(xiàn)實世界中,充滿了各種各樣的信息,如聲音、文字、圖像等,這些信息在計算機中的表示即為數(shù)據(jù)。(1)數(shù)據(jù)(Data)(2)數(shù)據(jù)庫(DBDatabase)(3)數(shù)據(jù)庫管理系統(tǒng)(DBMS)(4)數(shù)據(jù)庫系統(tǒng)(DBS,Database System)關(guān)系數(shù)據(jù)庫 根據(jù)目前數(shù)據(jù)庫的分類,有關(guān)系數(shù)據(jù)庫、層次數(shù)據(jù)庫和網(wǎng)狀數(shù)據(jù)庫3種。然而在現(xiàn)實生活中關(guān)系數(shù)據(jù)庫因其現(xiàn)實直觀,更符合人們

2、的使用習(xí)慣,也是大家接觸最多的一種數(shù)據(jù)庫。(1)關(guān)系數(shù)據(jù)庫(2)表(3)記錄(4)字段(5)記錄集(6)SQL語言8.2 可視化數(shù)據(jù)庫管理器【相關(guān)知識】1.可視化數(shù)據(jù)管理器 Visual basic 6.0為用戶提供了功能強的可視化數(shù)據(jù)管理器(visual Data Manager,VisData)。在Visual Basic開發(fā)環(huán)境內(nèi)單擊“外接數(shù)據(jù)”菜單中的“可視化數(shù)據(jù)管理器”選項,即可打開可視化數(shù)據(jù)管理器,如圖8-1所示,圖8-1 可視化數(shù)據(jù)管理器實踐訓(xùn)練【實訓(xùn)項目一】1.實訓(xùn)內(nèi)容在Visual Basic6.0中啟動可視化數(shù)據(jù)管理器。2.解決方案在Visual Basic6.0開發(fā)環(huán)境內(nèi)

3、單擊“外接數(shù)據(jù)”菜單中的“可視化數(shù)據(jù)管理器”選項如圖8-2所示圖8-2 打開可視化數(shù)據(jù)庫管理器3.項目分析Visual Basic6.0中帶有可視化數(shù)據(jù)管理器,可直接打開使用?!緦嵱?xùn)項目二】1.實訓(xùn)內(nèi)容在Visual Basic6.0中創(chuàng)建Microsoft Access數(shù)據(jù)庫,數(shù)據(jù)庫名為“student.mdb”。2.解決方案(1)選擇數(shù)據(jù)庫 在“可視化數(shù)據(jù)管理器”窗口中,單擊“文件”菜單中的“新建”菜單項,選擇“Microsoft Access”中可創(chuàng)建,如圖8-3所示。圖8-3選擇數(shù)據(jù)庫(2)創(chuàng)建數(shù)據(jù)庫 選擇要創(chuàng)建的數(shù)據(jù)庫類型及版本后,顯示新建數(shù)據(jù)庫對話框,在對話框中選擇存入數(shù)據(jù)庫的路徑

4、,例如:F:VB,在“文件名”框中輸入要創(chuàng)建的數(shù)據(jù)庫名:student.mdb,如圖8-4所示,單擊“保存”按鈕。圖8-4創(chuàng)建數(shù)據(jù)庫(3)顯示 此時“數(shù)據(jù)窗口”和“SQL語句”窗口顯示在可視化數(shù)據(jù)管理窗口中,如圖8-5所示?!皵?shù)據(jù)庫窗口”以樹形結(jié)構(gòu)顯示數(shù)據(jù)庫中的所有對象,可在“數(shù)據(jù)庫窗口”中單擊鼠標右鍵激活快捷菜單,執(zhí)行“新建表”、菜單項;“SQL語句”窗口用來執(zhí)行合法的SQL語句,用戶可用窗口上方的“執(zhí)行”、“清除”、“保存”按鈕對SQL語句經(jīng)行對應(yīng)的操作。3.項目分析 按照上述步驟可直接在Visual Basic6.0中創(chuàng)建Microsoft Access數(shù)據(jù)庫。圖8-5 數(shù)據(jù)庫窗口【實訓(xùn)

5、項目三】1.實訓(xùn)內(nèi)容 在student.mdb數(shù)據(jù)庫中添加數(shù)據(jù)表stu,遵循下表規(guī)定的字段名,類型,長度,并添加數(shù)據(jù)。2.解決方案 利用數(shù)據(jù)庫管理器向已建立的數(shù)據(jù)庫student.mdb中添加數(shù)據(jù)庫表stu,操作步驟如下: a.如圖8-5所示的“數(shù)據(jù)庫窗口”中單擊鼠標右鍵,選擇“新建表”菜單項。字段名類型長度學(xué)號Text(文本)10姓名Text(文本)12性別Boolean(邏輯)年齡Integer(整形)專業(yè)Text(文本)30圖8-6 “表結(jié)構(gòu)”對話框顯示如圖8-6所示的“表結(jié)構(gòu)”對話框。其中, 表名稱:指數(shù)據(jù)表的名稱,輸入:stu。 單擊“添加字段”按鈕顯示如圖*所示的“添加字段”對話框

6、。 名稱:指字段名,如學(xué)號,姓名等。 類型:指字段的數(shù)據(jù)類型,包括Text,Integer,Long等。 大小:指字段的寬度。 “固定字段”和“可變字段”:表示字段的長度是否可以變化。 允許零長度:表示是否允許零長度字符串為有效字符串。 必要的:指字段是否要求非Null值。 順序位置:用于確定字段相對位置。 驗證文本:如果用戶輸入的字段值無效則顯示“驗證文本”的信息。 驗證規(guī)則:確定可以輸入什么樣的數(shù)據(jù)。 默認值:指插入記錄時字段的默認值。圖8-7 “添加字段”對話框 一個字段的各項信息添完后,單擊“確定”按鈕,如圖8-7所示。之后可添加下一個字段信息,所有字段信息添加完,單擊如圖8-8中的“

7、生成表”按鈕,則生成一張新表。3.項目分析 在Visual Basic6.0中提供了定義表結(jié)構(gòu),添加數(shù)據(jù)的方法,按照上述步驟即可完成。圖8-8 表結(jié)構(gòu)【實訓(xùn)項目四】1.實訓(xùn)內(nèi)容在Visual Basic6.0中查詢學(xué)生情況表stu中年齡大于19歲的記錄。2.解決方案在VisData窗口中的建立查詢的步驟:a.在VisData窗口中打開上述student.mdb數(shù)據(jù)庫,右擊“數(shù)據(jù)庫窗口”,在快捷菜單中選擇“新建查詢”菜單項,顯示“查詢生成器”窗口,如圖8-9所示。圖8- 9“查詢生成器”窗口b.在“查詢生成器”窗口中,單擊“表:”框中的“stu”表名。c.在“字段名稱:”下拉列表框中選擇“stu

8、.年齡”,在“運算符”下拉列表框中選擇“”,在“值:”文本框中輸入19。d.在“要顯示的字段:”框中選擇查詢表中要顯示的字段“stu.學(xué)號”、“stu.姓名”、“stu.年齡”,單擊“升序”,如圖8-10所示。圖8-10選擇要顯示的字段e.單擊“將And加入條件”或“將Or加入條件”按鈕,在“條件:”框中顯示要查詢的條件。f.單擊“顯示”按鈕,顯示“SQL查詢”消息框如圖8-11所示,將查詢條件用SQL語句寫出。單擊“運行”按鈕,則顯示“這是SQL傳遞查詢嗎?”消息框,單擊“否”,生成查詢結(jié)果窗口,如圖8-12所示。圖8-11 顯示“SQL查詢” 圖8-12 查詢結(jié)果g.單擊“保存”按鈕,將查

9、詢結(jié)果保存,輸入查詢名“stuquery” 如圖8-13所示。則在VisData窗口左側(cè)的“數(shù)據(jù)庫窗口”顯示student數(shù)據(jù)庫中的表和1個查詢。 圖8-13 保存查詢3.項目分析在Visual Basic6.0中提供了豐富的提案件查詢組合,開發(fā)人員可根據(jù)自己需要生成查詢語句。8.3 使用數(shù)據(jù)控件訪問數(shù)據(jù)庫 Visual Basic 6.0中提供了大量的控件用于數(shù)據(jù)庫編程,這無疑給用戶設(shè)計數(shù)據(jù)庫應(yīng)用程序提供了強有力的支持。在一定程度上來說, Visual Basic 6.0是數(shù)據(jù)庫應(yīng)用程序設(shè)計的首選開發(fā)工具。 Visual Basic 6.0提供了常用數(shù)據(jù)庫訪問控件、數(shù)據(jù)庫綁定控件。用戶可以通

10、過數(shù)據(jù)庫訪問控件來建立與數(shù)據(jù)庫的連接,用數(shù)據(jù)綁定控件對數(shù)據(jù)進行顯示。然后用數(shù)據(jù)庫訪問控件對數(shù)據(jù)庫進行直接的操作。一般的數(shù)據(jù)庫相關(guān)操作基本上可以完全由數(shù)據(jù)庫控件完成。1.DATA數(shù)據(jù)控件訪問數(shù)據(jù)庫【相關(guān)知識】Data控件的屬性 Data控件常用的屬性有Connect屬性、DatabaseName屬性、RecordSource屬性及RecordsetType屬性。下面分別對這幾種屬性予以介紹。(1) Connect屬性 Connect屬性用于設(shè)置連接數(shù)據(jù)庫的類型。Visual Basic 6.0提供了多種可訪問的數(shù)據(jù)庫類型,其中比較常用的有Access、dBASE和FoxPro等。該屬性可以通過“

11、屬性窗體”來進行設(shè)置。這里用Access數(shù)據(jù)庫作為后臺數(shù)據(jù)庫,所以選擇Access類型。語法如下: object .Connect =databasetype參數(shù)databasetype指定數(shù)據(jù)庫的類型。(2) DatabaseName屬性 DatabaseName屬性用于返回或設(shè)置Data控件數(shù)據(jù)庫文件的名稱和位置。該屬性可以通過單擊“屬性窗口”中DatabaseName屬性右邊的按鈕來進行設(shè)置,也可以在運行時通過語句來設(shè)置。語法如下: object.DatabaseName=pathname 參數(shù)pathname用于指定數(shù)據(jù)庫文件的路徑和名稱。(4) RecordsetType屬性 Rec

12、ordsetType屬性用于返回或設(shè)置一個值,指定用Data控件創(chuàng)建的Recordset對象的類型。語法如下。object.RecordsetType=valueobject:對象表達式,此處為Data控件。value:字符串表達式,該參數(shù)用于指定Recordset類型的常數(shù)或值。2.Data控件的方法 Data控件常用的方法有Refresh方法、UpdateRecord方法及UpdateControls方法。下面分別對這三種方法予以介紹。(1)Refresh方法 Refresh方法用于更新Data控件的數(shù)據(jù)。該方法常用于當(dāng)打開或重新打開數(shù)據(jù)庫時來刷新記錄集。例如,當(dāng)用改變Connect或Re

13、cordSource刷新后,必須用Refresh方法來更新。語法如下:object .Refresh(2)UpdateRecord方法 UpdateRecord方法用于將數(shù)據(jù)綁定控件中的內(nèi)容寫入到數(shù)據(jù)庫中。UpdateRecord方法與執(zhí)行Edit方法改變一個字段并隨后執(zhí)行Update方法產(chǎn)生效果相同。語法如下:object.UpdateRecord(3)UpctateControls方法 UpdateControls方法用于從Data控件的Recordset對象中獲取當(dāng)前記錄,并且在綁定數(shù)據(jù)控件中顯示當(dāng)前記錄。該方法可以終止任何掛起的Edit或AddNew操作。語法如下:object.Upd

14、ateControls3.Data控件的事件 Data控件常用的事件有Error事件、Reposition事件及Validate事件。下面分別對這三種事件予以介紹。(1).Error事件 Error事件,當(dāng)Data控件產(chǎn)生執(zhí)行錯誤時觸發(fā)。通常用該事件來捕獲錯誤并進行處理。例如,當(dāng)Data控件要自動打開一個數(shù)據(jù)庫,并在Form_Load事件后裝載一個Recordset對象。Error事件的代碼框架如下所示:Private Sub Data1_Error(DataErr As Integer, Response As Integer)添加處理代碼End Sub參數(shù)說明如下:DataErr:該參數(shù)用

15、于指定錯誤號。Response:該參數(shù)用于指定所要采用的響應(yīng)編號。(2).Raposition事件 Reposition事件,當(dāng)一個記錄成為當(dāng)前記錄后觸發(fā)。通常是利用該事件進行以當(dāng)前記錄內(nèi)容為基礎(chǔ)的操作,如進行計算或改變窗體來顯示當(dāng)前記錄。(3).Validate事件 Validate事件,當(dāng)一條不同的記錄成為當(dāng)前記錄之前,且在Update方法及Delete、Unload或Close操作之前會發(fā)生該事件。實踐訓(xùn)練【實訓(xùn)項目】1.實訓(xùn)內(nèi)容 利用DATA數(shù)據(jù)控件,顯示學(xué)生基本情況窗體,如圖8-14所示,顯示數(shù)據(jù)庫student.mdb中表stu中的學(xué)號、姓名、性別、年齡、專業(yè)字段信息2.解決方案圖

16、8- 14 窗體1.加入DATA對象 如圖8-15所示,設(shè)置“DatabaseName”為“F:VBstudent.mdb”用于指定數(shù)據(jù)庫文件的路徑和名稱。圖8- 15 設(shè)置Data12.設(shè)置文本框顯示數(shù)據(jù)庫student.mdb中表stu中的學(xué)號、姓名、性別、年齡、專業(yè)字段信息。如圖8-16所示,設(shè)置DataSource屬性為Data1,設(shè)置數(shù)據(jù)控件為Data1;設(shè)置DataField屬性為學(xué)號,設(shè)置綁定控件與數(shù)據(jù)庫學(xué)號字段建立聯(lián)系。圖8- 16 設(shè)置Text13.項目分析 按照上述步驟可直接在Visual Basic6.0中利用DATA數(shù)據(jù)控件,顯示學(xué)生基本情況。ADO數(shù)據(jù)控件訪問數(shù)據(jù)庫【

17、相關(guān)知識】 ADO控件用于對數(shù)據(jù)源進行訪問和操作。與Data控件相比,ADO控件的應(yīng)用范圍和功能更強大。該控件通過Microsoft ActiveX Data Object(ADO)技術(shù),快速地創(chuàng)建一個到數(shù)據(jù)庫的連接。ADO控件可以連接任何符合OLE DB規(guī)范的數(shù)據(jù)源或是一個ODBC數(shù)據(jù)庫。目前,在數(shù)據(jù)庫應(yīng)用程序開發(fā)中ADO控件已經(jīng)逐漸地替代了Data控件。 ADO控件不是內(nèi)部控件,在使用ADO控件之前,必須先將該控件加載到工具箱中。選擇“工程”一“部件”命令,打開“部件”對話框,如圖8-17所示。在列表中選擇“Microsoft ADO Data Control 6.0(OLE DB)”選項

18、,單擊“確定”按鈕,加載ADO控件到工具箱中,如圖8-18所示。圖8-17 打開部件圖8-18部件對話框1ADO控件的屬性 ADO控件常用的屬性有ConnectionString屬性、RecordSource屬性、CommandType屬性及ConnectionTimeout屬性。下面分別對這4種屬性予以介紹。(1)ConnectionString屬性 ConnectionString屬性用于建立到數(shù)據(jù)源的連接信息。在使用該屬性時,常常通過ADO控件的屬性選項卡來為該屬性指定連接字符串。在應(yīng)用程序代碼編寫時,也可以通過該屬性來動態(tài)地改變數(shù)據(jù)源。(2)RecordSource屬性 RecordS

19、ource屬性用于設(shè)置ADO控件要訪問數(shù)據(jù)庫中的數(shù)據(jù)表。當(dāng)然,也可以將該屬性設(shè)置為一個SQL查詢來返回符合條件的記錄。以下代碼演示了如何使用RecordSource屬性返回查詢結(jié)果。代碼如下所示。 Adodcl. RecordSource=”SELECT * FROM EmpTable”(3)CommandType屬性 CommandType屬性用于指定RecordSounce屬性的取值類型??梢灾苯釉凇皩傩源翱凇敝械腃ommandType屬性列表框中從右邊的下拉到表選擇需要的類型。(4)ConnectionTimeout屬性 ConnectionTimeout屬性用于設(shè)置一個連接建立的等待時

20、間,以秒為單位。如果連接超時,則返回超時錯誤并給出提示信息。例如,將ADO控件的ConnectionTimeout屬性設(shè)置為15s。代碼如下所示:Adockl . ConnectionTimeout=15在應(yīng)用程序中加入以上代碼,當(dāng)由于一些原因?qū)е逻B接超過15s時,系統(tǒng)會提示用戶連接超時。2ADO控件的方法 ADO控件常用的方法有UpdateControls方法及Refresh方法。下面分別對這兩種方法予以介紹。(1)UpdateControls方法 UpdateConrrols方法用于從ADO控件的Recordset對象中獲取當(dāng)前記錄,并在數(shù)據(jù)庫綁定控件中顯示相應(yīng)的數(shù)據(jù)。如果讀者改變了數(shù)據(jù),

21、然后又決定取消這些改變,則可以使用該方法將綁定控件的內(nèi)容恢復(fù)為其初始值。語法如下。object.UpdateControls(2)Refresh方法 Refresh方法用于更新ADO控件的數(shù)據(jù)。該方法常用于數(shù)據(jù)修改或改變后的刷新。語法如下:object.Refresh3用ADO控件連接數(shù)據(jù)庫 用ADO控件連接數(shù)據(jù)庫是編寫數(shù)據(jù)庫應(yīng)用程序的首要任務(wù)。ADO控件連接數(shù)據(jù)庫主要有兩種方法。第一種方法是通過對ADO控件的屬性進行設(shè)置,來實現(xiàn)與數(shù)據(jù)庫的連接。第二種方法是使用代碼實現(xiàn)與數(shù)據(jù)庫的連接。實踐訓(xùn)練【實訓(xùn)項目】1.實訓(xùn)內(nèi)容 設(shè)置ADO控件的屬性實現(xiàn)連接數(shù)據(jù)庫。在Visual Basic6.0中設(shè)置A

22、DO控件的屬性實現(xiàn)連接學(xué)生基本信息數(shù)據(jù)庫“stu”2.解決方案 (1)為窗體上添加一個ADO控件 右鍵單擊ADO控件,如圖8-19所示。選擇“ADODC”屬性命令,打開ADO控件“屬性頁”對話框,如圖8-20所示。圖8- 19添加“ADO控件”圖8-20 “屬性頁”對話框(2)在“屬性頁”對話框中選擇“通用”選項卡,選中“使用連接字符串”單選按鈕,然后單擊“生成”按鈕,彈出“數(shù)據(jù)連接屬性”對話框,如圖8-21所示。 該對話框用于提供數(shù)據(jù)源及OLE DB的提供者。由于前面章節(jié)中生成“stu”數(shù)據(jù)庫采用的是Acccss數(shù)據(jù)庫。 因此,在列表中選擇“Microsoft Jet 4.0 0LE DB

23、Provider”選項,單擊“下一步”按鈕?!皵?shù)據(jù)連接屬性”對話框轉(zhuǎn)換到“連接”選項卡。 圖8-21 “數(shù)據(jù)連接屬性”對話框圖 圖8-22 “連接”選項卡(3)在“連接”選項卡中需要輸入或選擇連接數(shù)據(jù)庫的名稱 如圖8-22所示。讀者可以通過單擊“”按鈕來選擇要連接的數(shù)據(jù)庫。 單擊“”按鈕后,選擇數(shù)據(jù)庫“F:VBstudent.mdb”?!斑B接”選項卡還提供了連接測試的功能,讀者可以單擊“測試連接”按鈕來驗證數(shù)據(jù)庫連接是否正確。 單擊“測試連接”按鈕,如果連接正常,則會提示讀者 “測試連接正?!薄?單擊“確定”按鈕,完成數(shù)據(jù)庫的連接。圖8-23 “記錄源”選項卡(4)完成數(shù)據(jù)庫連接后,會彈出“屬

24、性頁”對話框的“記錄源”選項卡,如圖8-23所示。 該選項卡用于選擇記錄源,其中提供了4種命令類型可供選擇。這4種命令類型,讀者可以參考ADO控件的Commandlype屬性選擇“2-adCmdTable”選項,井在“表或存儲過程名稱”列表中選擇“stu”選項。單擊“確定”按鈕完成記錄源的設(shè)置。至此,完成了用ADO控件連接數(shù)據(jù)。3.項目分析在Visual Basic6.0中通過添加ADO控件,設(shè)置屬性頁屬性,設(shè)置連接選項卡,實現(xiàn)連接數(shù)據(jù)庫8.4 綜合實訓(xùn)【綜合實訓(xùn)】1.實訓(xùn)內(nèi)容 程序運行后出現(xiàn)如圖8-24窗體,窗體顯示職員信息預(yù)覽,窗體左側(cè)顯示所有職員信息,右側(cè)“職員信息”欄中顯示單個職員的詳

25、細信息。利用ADO對象模型中的Connection對象和Recordset對象打開職員數(shù)據(jù)庫“DBEmp”,操作“EmpTable”顯示窗體內(nèi)容。2.解決方案圖8-24 程序界面程序創(chuàng)建步驟如下: 單擊“工程”“引用”命令,選擇“Microsoft ActiveX Data Object”列表項,然后單擊“確定”按鈕,將ADO對象添加到工程中。 選擇“工程”“部件”命令,選擇“Microsoft ADO Data Control 6.0(OLE DB)”列表項,然后單擊“確定”按鈕,將MSHFlexGrid表格控件添加到工具箱中。 向窗體中添加2個框架控件、5個標簽控件及1個MSHFlexGr

26、id表格控件。代碼如下:程序名:F:VB prac8_4_1.frmF:VB prac8_4_1. vbp Option Explicit Dim conn As ADODB.Connection 定義Connection對象 Dim rs As ADODB.Recordset 定義Recordset對象 Private Sub Form_Load() 初始化程序 Set conn = New ADODB.Connection 分配一個Connection對象 Set rs = New ADODB.Recordset 分配一個Recordset對象 conn.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論