FireBird数据库使用指南.docx

上传人:封****n 文档编号:96697924 上传时间:2024-03-10 格式:DOCX 页数:22 大小:112.10KB
返回 下载 相关 举报
FireBird数据库使用指南.docx_第1页
第1页 / 共22页
FireBird数据库使用指南.docx_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《FireBird数据库使用指南.docx》由会员分享,可在线阅读,更多相关《FireBird数据库使用指南.docx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、FireBird数据库使用指南一、FireBird数据库简介Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。Firebird提供良好的并发性,高效的执行,强大的语言支持存储过程和触发器。从1981年起,它已经被许多商业公司运用于许多的产品系统中。 Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品,用C和C+开发。由于与interbase的血缘关系,大部分interbase的

2、开发工具可以直接应用到Firebird开发中。Firebird和原Borland的InterBase有着相同的血脉,其作为一个开源项目在2000年7月25日 Firebird特性介绍:firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端连结。总之:它是一个开源的,强大在,可以自由使用的数据库(即使是商业上的使用) 关键特性:支持原子性,并发性,隔离性等概念。 MGA:支持事务的多个版本功能, 存储过程:使用PSQL(Procedure SQ

3、L),你可以创建强大的存储过程来处理服务上的所有数据,你可以使用select Stored Procedure的形式,使用存储过程,以得到一个虚拟的表结构的结果。这样的话,你就可以很容易的在报表中使用它。 事件:存储过程和触发器可以引发事件,这个事件可以被客户端程序监听到 生成子:生成子也称为序列,它可以很容易的实现自动增加的字段。它是一个INT64的长度,因此,它可以用在一个事务中,也可以用在其它很多方面。只读数据库:我们可以把数据库存放在CD中,形成一个只读数据库。如果我们的应用程序也在光盘上,再加上嵌入式的FB数据库服务器,便可以得到一个无与伦比的 CDLIVE(即只用光盘就可以运行起来

4、)应用。 全事务控制:一个客户端可以存在多个并发的事务。并且每一个事务都可以独立的进行控制,两段提交功能可以保证数据库的一致性。锁优化机制也支持多个事务的保存点。在线备份:不需要停止数据库即可进行备份,一个备份进程产生一个数据库当前的快照。因此,用户可以在备份期间持续的工作,即实现24x7(每天24小时,每周7天)的操作。 触发器:每一个表可以有多个并发的行级触发器,可以在插入前,插入后,更新前,更新后,删除前,删除后进行触发。我们可以在触发器中写入PSQL语句,默认值,产生异常,firebird现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。 扩展函数:可以使用C语

5、言,C+,DELPHI写UDF,使用UDF(用户定义函数库)可以很容易的挂入数据库引擎中以扩展我们需要的功能字符集:Firebird实现了很多国际标准的字符集,包括Unicode。 SQL标准兼容:Firebird 实现了全部SQL92所要求的功能,实现了SQL99最常用的的要求。包括但不限于FULL/LEFT/RIGHT OUTER JOIN , UNION, DISTINCT , 子查询 (IN, EXISTS),内部函数 (AVG, SUM, MIN, MAX, COALESCE, CASE, .), 主键,外键,唯一索引以及所有通用的数据类型。 Firebird还实现了域,字段级别的约

6、束,视图,异常,规则和权限管理,更多的详细信息,请参考Firebird发布通知和参考手册。 硬件需求:Firebird可以工作最常见的硬件环境中,甚至非常差的硬件中,也能很好的工作,当然,硬件的要求依赖于你想做什么,例如你有多个并发用户等等。 有效的平台支持Firebrid在常见的平台上都可运行,如Linux和Windows(包括Windows终端服务器)其它支持的平台包括(MACOS(苹果机),Solaris及HP-UX)把数据库从一个平台转到另一个平台,非常的容易,只要备份数据库,然后,再到另一个平台上恢复即可可连接性Firebird 支持一系列的连接方法,目前,可以通过原生的DELPHI

7、,C+组件连接,也可以通过ODBC,JDBC,PHP,OLEDB,DbExpress进行连接。原生的联连提供了直接调用Firebird的API函数库(fbclient.dll/.so)进行调用的能力。物理限制Firebird支持非常巨大的数据库,数据库可以分成多个物理文件。每个文件的大小依赖于操作系统的限制。当前一个数据库文件最大的理论限制是64T(即64000G),因此,常见的限制通常是操作系统的限制以及磁盘空间的限制。 服务器引擎版本当前有三个服务器版本。 标准服务器:每一个客户连接将引发一个服务器进程(支持多处理器) 超级服务器:一相服务器进程模块管理所有的客户端连接,当前不支持多处理器

8、。 嵌入服务器:整个服务器引擎就是一个动态库,只支持本地通过IO进行调用。 但是,所有的服务器都使用一种数据库格式,因此,你可以很方便的在不同的引擎之间共享数据库文件的数据。协议Firebird协议使用IPL(interbase public license)和IDPL(Initial Developers Public License),这种协议类似于Mozilla协议。你可以完全的自由使用并且可以自由的布署在你的客户应用上。你不需要公开你的源代码。当然,如果你修改和数据库引擎,你应该公布源代码。 工具有很多的工具支持Firebird.包括自由的,免费的和商业的。包括开发工具,管理工具,诊断

9、工具等等。 支持和资源团队Firebird有一系列的用户支持的团队和新闻组,您可以寻求在线支持。您可以查看项目主页上的全部新闻组列表。 历史Firebird基于开源Interbase6.0,它是Borland公司年发布的一个开源版本。关于Interbase的最早历史可以追溯到1984年,因此,这个数据库已经有20岁了。 特点1、Firebird是一个真正的关系数据库,支持存储过程、视图、触发器、事务等大型关系数据库的所有特性; 2、Firebird支持SQL92的绝大部分命令,并且支持大部分SQL99命令,新版Firebird 2.0对SQL99的支持更完整; 3、Firebird源码基于成熟

10、的商业数据库Interbase,有良好的稳定性,与Interbase有良好的兼容性; 4、不用考虑授权费用(免费),不用当心将来有一天你或你的客户因为使用盗版而被数据库开发商告上法庭; 5、发布简易,安装文件只有几M,且高度可定制,客户端的分发也很简单,只需一个DLL文件; 6、Firebird的一嵌入式服务器版本,不用安装,直接运行,基于单机开发首选; 7、Firebird的运行效率非常高;8、具备高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系统下运行,而且数据库格式完全一样,不用修改; 9、开发环境支持良好,Delphi,C+Builder不用通过OD

11、BC连接,直接用原生开发接口开发基于Firebird的程序。 二、FireBird数据库的安装架構firebird 資料庫軟體有三種套件,並而支援不同作業平台(windows系列,linux,freebsd等.)1. Super Server-無法直接存取資料庫檔案,必須透過socket來和伺服器溝通 2. Classic-直接存取資料庫的檔案,多個程式可以同時存取一個檔案,有點像vfp,dbase 3. embedded-專為一些小型系統的嵌入式資料庫 (pda)下載及安裝主網站:Download-Firebird relational database直接點兩下就可以安裝,請照步驟,根據自

12、己的需求來安裝預設安裝路徑windows:c:program filesfirebirdfirebird_1_5linux:/opt/firebird 兩個作業系統下的目錄結構非常像根目錄下:firebird.conf-設定檔 aliases.conf -別名檔friebird.log -記錄檔SYSDBA.password -linux才有,管理者的名稱及密碼在裏面,windows則預設:名稱:sysdba,密碼:masterkeywindows直接使用security.fdb來存sysdba的密碼注意:使用者名稱不分大小寫,但密碼有分目錄/bin:則是一些必要的主要及工具程式設定 fire

13、bird 主要的設定檔firebird.conf 預設tcp/ip會啟動port:3050你可以使用telnet ip 3050來測試aliases.conf設定資料庫的別名資料庫連線時一般要指定路徑,有時路徑太長時你可以指定,在aliases.conf中使用別名來存取它是位於你安裝firebird的根目錄,以下為內建範例# 別名 = 原始路徑employee.fdb = /opt/firebird/examples/employee.fdb其中#為註解,而windows及linux的路徑是有所不同:# fbdb1 在Windows伺服器:fbdb1 = c:FirebirdsampleEmp

14、loyee.fdb# fbdb2 在Linux伺服器:fbdb2 = /opt/databases/killergames.fdb資料庫執行時可以編輯這個檔案,不需要重新啟動伺服器連線別名的方式:Server_name:aliasname使用者管理(consloe介面)1.預設管理者名稱sysdba,密碼masterkey2.密碼檔security.fdb,位於firebird安裝目錄下3.管理程式gsec 安裝目錄下bin4.密碼長度限制在8碼用法:本地主機(資料庫server在本台電腦)gsec -user sysdba -password options遠端主機(資料庫server在別台

15、電腦)gsec -user sysdba -password -database gsec命令display顯示所有使用者display 顯示某使用者add -pw options新增使用者modify options修改使用者delete 刪除使用者help求助?同上quit離開gsecz顯示版本options-password 管理者的密碼-user 使用者名稱-pw 使用者密碼-fname 英文名字有,三個部份-mname -lname -modiyf sysdba -pw londo 刪除本地使用者gsec -user sysdba -password masterkey -delet

16、e joe 資料庫管理(console)程式isql位於安裝目錄下的bin以下是一個操作範例:c:Program filesfirebirdfirebird_1_5binisql -user sysdba -password masterkey Use CONNECT or CREATE DATABASE to specify a databaseSQL connect test;Database: test, User: sysdbaSQL show table; COUNTRY CUSTOMER DEPARTMENT EMPLOYEE EMPLOYEE_PROJECT JOB PHONE_

17、LIST PROJECT PROJ_DEPT_BUDGET SALARY_HISTORY SALESSQL select * from country ;COUNTRY CURRENCY= =USA DollarEngland PoundCanada CdnDlrSQLquit;建立資料庫1.建立資料庫create database 2.建立資料表格create table (sql指令)3.刪除資枓表格drop table (sql指令)4.查詢資料庫中所含表格 show table 5.查詢表格中的結構 show table 表格名稱6.新增,刪除,更新(insert,delete,upd

18、ate)均為sql指令7.SQL命令交付,在新增或刪除時,資料庫並未直接變更,要使用sql指命commit 或commit work來更新isql -user sysdba -password masterkeycreate database c:temptest.fdb;create table abc (name char(12),age numeric(3); show table friend ;insert into abc (name ,age) values( cschen,34);select * from abc;以上的操作主要是sql指令命令的結尾必需使用;, 如果沒有使用

19、;提示會由SQL變為CON,告訴你延續之前的命令每一個資料庫有一個特殊資料庫-系統資料庫,包含了使用者權限等. . .使用者權限1.GRANT 授予使用者權限 GRANT 權限 ON 物件 TO 對象 with grant option2.REVOKE 撤消使用者權限 REVOKE 權限 ON 物件 FROM 對象權限:SELECT ,INSERT ,UPDATE,DELETE, ALL物件:TABLE,VIEW對象:使用者,PUBLIC(代表全部)with grant option 讓該名使用者有設定別的使用者的權限 *因為isql無法輸入中文,因此無法使用在中文輸入資料*在linux下由於

20、可能會有同名的isql(unixODBC套件),而linux安裝在/opt/firebird,因此必須使用絕對路徑來執行,另資料庫的管理者名稱可以不固定,至於密碼在安裝時會自動產生在檔案SYSDBA.password中連線方式(檔案/tcpip)程式支援兩種連線方式1.使用完整路徑連線 c:abcd.2.使用tcpip連線,在路徑前加主機的名稱或IP 主機:c:abcd.我們可以根據切換這兩種windows 下的路徑如有空白,有時必須使用 將路徑框起來才可以用資料庫/使用者管理(gui) 我有試過幾個免費的windows端的軟體 選擇ibeasy+: 非常容易管理,必須有資料庫的觀念另外可配合

21、marathon使用ibeasy+使用者管理介面:server-users management(輸入管理者的名稱及密碼,進入下一個視窗)(你就可以管理你的使用者)設定odbc 在firebird-download -odbc下載後安裝odbc 資料庫的安全(備份/回存)(console)GBAK:命令列工具,命令有兩個狀態,備份/回存(-b / -c) 語法 gbak -user -password 1.備份gbak -b 是你要備份的資料庫來源, 是備份的目的地檔名.一般的延伸附檔名 是 .fbk .只有SYSDBA 或是資料庫的擁有者可以執行備份工作. 對於多個檔案的資料庫,只需指定第一

22、個檔案的名稱來當資料庫的名稱. 2.回存 gbak -c 是先前備份的檔案而 是資料庫的名稱選項 (中括號內的是非必要,也就是命令可以使用中括號前的縮寫,或是含中括號內為長參數)參數 說明 功能-backup_database 備份 備份 -buffers Set cache size for restored database 回存 -create_database 回存 (必要參數) 回存 -convert 轉換外部表格到內部表格s 備份 -expand 建立一個非壓縮的備份 備份 -factor n 磁帶機的區塊系數 備份 -garbage collect 備份時不清空已刪除的資料 備份

23、 -inactive 所有的索引將回存為INACTIVE 回存 -ignore 備份時不做checksum錯誤檢查 備份 -kill 在不建立定義備份中的shadows 回存 -limbo 備份時忽略limbo transactions 備份 -metadata只備份資料表格的metadata (schema).不備份資料備份-mode read_write 回存一個 可讀/寫的資料庫(預設)回存-mode read_only 回存一個唯讀寫資料庫 回存 -no_validity 不回存validity constraints.也就是回存資料不回存 constraints 回存 -nt 非相容

24、性的格式(只使用在相同作業平台,及firebird版本)備份-one_at_a_time 一次回存一個表格.你可以分別分次回存表格回存 -old_descriptions 舊的格式 備份 -page_size 設定page size of new database. 可以是 1024, 2048, 4096, 8192.預設1024. 回存 -password 資料庫的密碼 -replace_database 回存在一個存在的資料庫上.只能在擁有本資料庫的使用者可以操作 這是覆寫,不要執行在使用中的資料庫! 回存 -role 使用某一群組(role )來連線 -service :service

25、_mgr 備份: 建立,使用服務管理.回存: 回存,使用服務管理.-transportable 建立可轉移的備份(不同作業系統及firebird版本) 備份 -user 資料庫使用者的名字-use_all_space 正常,回存,資料庫頁會填滿80% 唯讀才會寫回100%(因為不用預留修改的空間) 回存 -verbose 顯示所有gbak執行的詳細動作-y 重導所有的輸出到一個檔案 .注意:命令執行之前不可以存在檔名! -y suppress_output Quiet mode -z 顯示版本範例:正常的備份:gbak -v -t -user SYSDBA -password masterke

26、y dbserver:/db/warehouse.fdb c:backupswarehouse.fbk備份並記錄所有備份時的輸出訊息:gbak -v -t -user SYSDBA -password masterkey -y c:backupswarehouse.log dbserver:/db/warehouse.fdb c:backupswarehouse.fbk正常的回存:gbak -c -v -user SYSDBA -password masterkey c:backupswarehouse.fbk dbserver:/db/warehouse2.fdb回存到一個已存在的資料庫:g

27、bak -c -r -v -user SYSDBA -password masterkey c:backupswarehouse.fbk dbserver:/db/warehouse.fdb回存一個唯讀的資料庫:gbak -c -v -mode read_only -use_all_space -user SYSDBA -password masterkey c:backupswarehouse.fbk c:fileswarehousedb.fdb多重檔案備份當資料庫很大時,要備份有點困難,因此我們將資料庫備份成許多小的檔案,如此儲存時比較方便 備份語法:gbak options . 注意:

28、不要指定最後一個檔案的大小.因我們不一定知道最後一個檔案需要多少空間來儲存,所以它將自動依據大小來儲存.至於其它檔案的大小可以是 bytes (8192), kilbytes (1024k), megabytes (5m), 或 gigabytes (2g) 回存語法:gbak -c options . 回存到一個多個檔案的資料庫有些系統的檔案系統有限制,或是為了效能的因素,因此單一資料庫,可分成多個小的資料庫gbak -c options . 注意:不要指定最後資料庫的大小.它可以無限制的依據回存的檔案來變更大小.Size can be given in bytes (8192), kilb

29、ytes (1024k), megabytes (5m), or gigabytes (2g) 由備份多個檔案回存到多個檔案的資料庫:gbak -c options . . 資料庫安全(備份/ 回存)(gui)(ibeasy+,參考hlp檔)選項 (Database | Save Database)你可以簡單複製資料庫檔(如一般的指令copy) 但是無法確定資料庫的安全.優點: 改善效能經由排除不完整的(eliminating incomplete)交易和過期的記錄 減少資料庫的大小-移除刪除的記錄 獨立的備份和回存的功能和作業系統無關 執行時必要參數: 資料庫全名 備份檔案的名稱,可包含大小

30、等特性. The options which must be applied at the time of back up- Checksums 檢查資料的完整. - End transactions - Metadata only 只存結構不存資料. - Eliminate garbage 予許釋放舊版本記錄的空間. - Old data format- Transportable database 可以回存資料庫到不同的作業系統. - Convert to tables 轉換外部檔案到內部表格. 選項: (Database | Restore Database)執行這個操作,必須是這個資料

31、庫的擁有者或是有執行管理系統的權限: SYSDBA.一個資料備份的資料庫可以回存執行時必要參數: 備份檔案的名稱 資料庫全名 可用的參數 - Page size 變更資料庫每頁的大小,可以改善效能.說實在,所有資料庫在一頁中會比較快.- Rebuild Indices. 重建索引- Create database image Allow the recovery of a database in case of disk crash. - Validity conditions Allow when data are not valid any more, following for exam

32、ple a modification of the integrity constraints, to be unaware of the integrity constraints. - Commit after each table - Replace database In this case, the database must be closed beforehand, and no user must be connected. - Create a new database This option is exclusive compared to the preceding op

33、tion - Use all space to recreate the database. By default, at the time of the restoration of a database, the pages are filled out to 80%. This option makes it possible to fill them to 100%.資料型態名稱 大小 範圍 /精度 描述 Blob 不固定blob段大小限於64K 動態變長度二進位類型,用於存放大量資料的情況,如圖片、音樂、視頻、多媒體等。其基本結構單位為段,它的子類型描述了存儲資料的詳細資訊 Bool

34、ean 16位 TrueFalseUnkown 代表了邏輯上的(真、假、不確定)與Dialect無關。 Char(N) n個字元 1到32767個位元組。雙字元集除2 固定長度的字元或字串 Date 64位 從西元後100年一月一日到32768年二月29日 日期類型。只有年月日,不帶時間 Decimal(P,S) 變數(16、32或64位) 精度p從1到18:指定數字的總長度;標度s從0到18:指定小數點後的位數。 定點小數。例如decimal(5,3)可以存儲的數位形式為:pp.sss Double Precision 64位 從2.22510的-308 次方到1.79710的308次方 I

35、EEE雙精度浮點數,15位長度 Float 32位 從1.17510的-38 次方到3.4020的38次方 IEEE單精確度浮點數,7位長度 Integer 32位 整數 Numeric(P,S) 變長(16、32或64位) 精度p從1到18:指定數字的總長度;標度s從0到18:指定小數點後的位數。 定點小數。例如decimal(10,3)可以存儲的數位形式為:ppppppp.sss Smallint 16位 從-32768到32767 短整數 Time 64位 從0:00 AM到23:59.9999 PM 時間類型 Timestamp 64位 從西元後100年一月一日到32768年二月29日

36、 帶有時間的日期類型 Varchar(N) n個字元 1到32767個位元組。字元集決定了其能容納的最大字元數 #Blobblob sub_type segment 這是一個特有的資料型態,是用於儲存比較大量的資料,類似其它資料庫的text或是memo資料型態,在定義時有兩個附加參數是sub_type, segmentsub_type是blob的資料類型,以下是它的types.h中的定義定義說明TYPE (TEXT, 1,nam_f_sub_type)TYPE (BLR, 2,nam_f_sub_type)TYPE (ACL, 3,nam_f_sub_type)TYPE (RANGES, 4,

37、nam_f_sub_type)TYPE (SUMMARY, 5,nam_f_sub_type)TYPE (FORMAT, 6,nam_f_sub_type)TYPE (TRANSACTION_DESCRIPTION, 7,nam_f_sub_type)TYPE (EXTERNAL_FILE_DESCRIPTION, 8,nam_f_sub_type)文字,類似memo,而資料型態varchar限制 32K二位元資料(圖片,影音檔等)1,2是我們常用的,其它的很少使用generator(計數器)計數器可以我們幫助產生循序的數字,你可以將其看成如一個公共變數,使用gen_id(generator名

38、稱,step)來取得一個值並加stepcreate generator my_gen num=gen_id(my_gen,1)則num問題如果純粹使用generator來填入,如果是uniqe或primary key,當generator最大值是26464 是很大數字要產生重複的機率很小自動展示create generator test_gen ;CREATE TABLE test1 (serial_no char(3) not null primary key,name char(15);建立觸發來自動取得ID(new.欄位名稱 ,這個變數是可以被sql指令時自動引用)set term !;

39、create trigger test for test1 active before insert asbegin new.serial_no=cast(gen_id(test_gen,1) as char(3);end ! set term ; !#針對本身欄位變更方法:觸發包含了三種sql指令及二種狀態執行前/執行後在insert的執行前,所有的插入到被觸發的表格的欄位,你可以使用 new.欄位名稱來存取,只要變更該值就可以自動變更新增到表格中的欄位值#在建立trigger 時由於trigger中的;(分號)會混淆結束符號,因此使用sql指令或在isql中新增trigger請變更其結尾符

40、號,是set term 結尾符號,預設的結尾符號;,因此做完要復原set term ;!流水號每日重置流水號使用表格欄位來記錄日期,檢查若日期不同則寫入新日期並將generator歸零(set generator 名稱 to 0),但無法使用在儲存函式中在新增之前觸發這個功能,比上述更簡單(尚未測試)create trigger test2 for test active before insert as declare variable temp_date date;declare variable serial_no char(3);begin if current_date=t_date

41、 then #取得流水號 serial_no=cast(gen_id(generator名稱,1) as char(3); else #將流水號置為0,使用相減 =GEN_ID(My_Generator, -GEN_ID(My_Generator) #取得流水號 endif end#current_dateselect current_date from rdb$database儲存函式或觸發呼叫其它的儲存函式execute procedure 名稱(變數1,變數2.) RETURNING_VALUES (變數,變數2.)最簡單的呼叫(不傳值,也不傳回值)直接執行 EXECUTE PROCED

42、URE 名稱測試函式的執行或 GENERATOR的結果1.建立一個GENERATORCREATE GENERATOR TESTGEN2.建立一個儲存函式(只是將GENERATOR加一)create procedure TEST asDECLARE VARIABLE MY FLOAT;BEGINMY=GEN_ID(TESTGEN,1);END3.直接執行命令EXECUTE TEST 4.查詢GENERATOR是不是變為2變數函式中自己宣告的區域變數1.直接引用-不需任何前置符號2.用在sql語法中-必須前置:記錄使用者CURRENT_USER 和 CURRENT_ROLE時間變數current_time,current_date,current_timestampudf自定函式的內建函式預設有內建函式放在在安裝目錄下的udf中含有的函式資訊在fbudf.sql、ib_udf.sql,但真正函式是在fbudf.dll、ib_udf.dll在firebird中使用者自定函式,和其它的sql-server有很大的不同在firebird中udf一般是以c或c+寫成函式,然後編譯成為模組1.windows- .dll檔2.linux - .so 檔再來將其放在安裝目錄的UDF目錄下,一般會將其宣告檔放在同一目錄下,如果不是放在預設的目錄下,你必須在firebird的環境檔中設定,但是會有安全

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁