DELPHI基础教程:Delphi开发数据库应用程序概述(二)[4]

DELPHI基础教程:Delphi开发数据库应用程序概述(二)[4],第1张

Sybase和MicroSoft SQL Server数据库

在建立Sybase或MicroSorft SQL Server的SQL Link时除了需要下列文件外 应用程序还需要Sybase数据库管理系统的客户端的连接产品与网络协议接口

表 建立Sybase数据库的SQL Link所需的文件

━━━━━━━━━━━━━━━━━━━━━━━━━━━

文件名  描 述

───────────────────────────

SQLD_SS DLL  BDE SQL Link for Sybase的驱动程序

SQLD_SS HLP  联机帮助文件

SQL_SS CNF  Sybase驱动程序的BDE配置文件

W DBLIB DLL  Sybase/MC SQL Server客户端的DLL文件

DBNMP DLL  Sybase/MC SQL Server客户端的DLL文件

SYDC LD  Sybase语言驱动程序

SYDC LD  Sybase语言驱动程序

━━━━━━━━━━━━━━━━━━━━━━━━━━━

Informix数据库

在建立Informix的SQL Link时除了需要下列文件外 应用程序还需要Informix数据库管理系统的客户端的连接产品与网络协议接口

表 建立Informix 数据库的SQL Link所需的文件

━━━━━━━━━━━━━━━━━━━━━━━━━━━

文件名   描 述

───────────────────────────

SQLD_ss DLL  BDE SQL Link for Informix的驱动程序

SQLD_INF HLP  联机帮助文件

SQL_INF CNF  Informix驱动程序的BDE配置文件

LDLLSQLW DLL  Informix客户端的DLL文件

ISAM IEM  Informix错误信息文件

OS IEM  Informix错误信息文件

RDS IEM  Informix错误信息文件

SECURITY IEM  Informix错误信息文件

SQL IEM  Informix错误信息文件

━━━━━━━━━━━━━━━━━━━━━━━━━━━

InterBase 数据库

在建立InterBase的SQL Link时除了需要下列文件外 应用程序还需要InterBase数据库管理系统的客户端的连接产品与网络协议接口

表 建立InterBase数据库的SQL Link所需的文件

━━━━━━━━━━━━━━━━━━━━━━━━━━━

文件名   描 述

───────────────────────────

SQLD_IB DLL  BDE SQL Link for InterBase的驱动程序

SQLD_IB HLP  联机帮助文件

SQL_IB CNF  InterBase驱动程序的BDE配置文件

CONNECT EXE  InterBase连接测试诊断工具

CONNECT HLP  InterBase连接测试诊断工具的帮助文件

GDS DLL  InterBase API DLL

REMOTE DLL  InterBase与网络的接口的DLL文件

INTERBASE MSG  InterBase错误信息文件

━━━━━━━━━━━━━━━━━━━━━━━━━━━

返回目录 DELPHI基础教程

       编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

Visual C++音频/视频技术开发与实战

Oracle索引技术

ORACLE G数据库开发优化指南

Java程序性能优化 让你的Java程序更快 更稳定

C嵌入式编程设计模式

Android游戏开发实践指南

lishixinzhi/Article/program/Delphi/201311/25179

具体过程如下:(仅供参考)

1,Oracle客户端网络配置文件

在Oracle产品安装完成后,为了与数据库连接,则必须进行网络连接配置当在SQL NetEasy Configuration中配置Oracle数据库别名时,Oracle并没有把数据库别名的信息写到注册表中,而是写到了文本文件%Oracle_homes%

\network\admin\tnsnamesora中tnsnameora文件格式如下:

exampleworld=(DESCRIPTION=(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCT)

Host=19216812)(Port=)))

(CONNECT_DATA=(SID=TEMP)))

其中,19216812为Oracle服务器的IP地址,TEMP为Oracle数据库实例名,Example 为网络连接串名本文件内容根据实际Oracle的环境进行相应的改动Delphi应用程序

运行时,需要读取tsnamesora和sqlnetora(%Oracle_homes%\network\admin目录

下)两个文件的数据库配置信息因此这两个文件成为必不可少的系统配置文件

2,应用程序所需动态链接库及其他文件

(1)%Oracle_himes%\bin目录下

OCIDLL

CORE40DLL

OTRACE80DLL

ORA805DLL

NTT80DLL

NLSTRL33DLL

NL80DLL

NS80DLL

NASNS80DLL

NASNS80DLL

NASNS80DLL

NASNS80DLLNNG80DLL

NNG80DLL

NMP80DLL

NPL80DLL

NR80DLL

NCR80DLL

NDWSI80DLL

NMS80DLL

NNFN80DLL

NNFD80DLL

NI80DLL

PLS805DLL

(2)%Oracle_homes%\nlsrtl32\data目录下

LX00001NLB

LX00023NLB

LX10001NLB

LX10035NLB

LX1BOOTNLB

LX20001NLB

LX20352NLB

LX20354NLB

LX60354NLB

3,目录设置

新建目录如oran,将应用程序放到此目录下将tnsnamesora和sqlnetora放到

ora\NET80\ADMIN目录下将(1)中的文件放到oran\BIN目录下,将(2)中的文件放到

oran\BNLSRTL33目录下

4,程序实现

在设置好文件和目录后,需要在注册表Oracle数据库相关信息在Delhpi应用程序的主窗体的Create事件编写代码如下:

PRCEDURE TF_MAINFORMCREAT(SENDER:TOBJECT);

VAR

reg:tregistry;//声明注册表类变量

begin

reg:=tregistryCreate;//创建变量

try

regRootKey:=HKEY_LOCALMACHINE;//判断注册表中是否已经存在ORACLE注册项

IF (redOpenKey('\SOFTWARE\ORACLE',FALSE))=false then

Begin//若不存在ORACLE注册项则创建

regCreateKey('\SOFTWARE\ORACLE');

regOpenKey('\SOFTWARE\ORACLE',true);//指明所用语言

regWriteString('NLS_LANG','SIMPLIFIED CHINESS_CHINAZHS16GBK');

//extractfiledir函数取得当前应用程序路径

//指明NLSRTL33目录路径

regWriteString(' NLSRTL33',extractfiledir(PARAMSTR(0))

+'\oran\DATA');

//指明Oracle初始目录路径

regWriteString('ORACLE_HOME',extractfiledir(PARAMSTR(0))+'\oran');

regWriteString('ORACLE_HOME_NAME','DEFAULT_HOME')

end

else//若存在Oracle注册项

begin

regOpenKey('\SOFTWARE\ORACLE',true);

if regvalueexists('NLSTRL33')=false then

//判断是否存在NLSRTL33注册项

begin//若不存在则创建相关信息

regWriteString('NLS_LANG','SIMPLIFIEDCHINESE_CHINAZHS16GBK');

regWriteString(' NLSRTL33', extractfiledir(PARAMSTR(0))

+'oran\NLSRTL33\DATA');

regWriteString('ORACLE_HOME_NAME','DEFAULT_HOME');

end

end

finally//释放资源

regCloseKey;

regFree;

end;

end;

写入注册表的信息是发生在主窗体的Create事件发生时,每次应用程序运行时,先检验注册表中是否有Oracle的注册信息,若没有则注册相关信息这样既是 *** 作系统损坏重装时也无需重新安装应用程序

在delphi的BDE中要配置好oracle数据库,然后在delphi中添加数据库database就可以了,database设置参数时设置oracle数据库的username 和password,如果需要查询,可以再选择datasource,dbgrid等控件

1新建一个DB LINKS,实现两个数据库之间的对接。

2写一个Procedure,实现覆盖或者追加的方法

3建立一个JOBS,按设置好的间隔时间就执行Procedure

希望以上可以帮倒您。

其他语言

用于开发数据库应用程序的语言中 还可以使用目前数常见的 面向对象程序设计 (OOP)语言 如C++ Objact Pascal等 OOP代表了一种完全不同的程序设计方法 在这种程序设计方法中 活动被定义为在 对象 上发生的 *** 作 而不是作为一系列过程来定义的 在数据库应用程序中使用OOP语言的情况正在不断增加

开发数据库应用程序使用的另一种语言是 宏 语言 宏语言不是一种完全的程序设计语言 它实际上是一个用户手工输入的表 这个表被输入到应用程序中 以便自动执行一定的任务 对于某个特定应用的高级语言 宏语言通常可以在低档DBMS软件中或数据库服务器的前端中找到

最后 还有一种 Query By Example (QBE 范例查询)语言 严格地讲QBE不是一种语言 它是面向用户提供了一个或多个空表的界面 这些空表对应于数据库中的表 用户可以通过键盘选择需要查询的列 并在适当的列中填入条件从而定义查询的检索条件 然后DBMS就把QBE转换成相应的动作 以完成用户要求的查询任务

Delphi的数据库特性及功能简介

直到目前为止 计算机软件的开发分为两个不同的体系 其中一个体系是使用传统的程序设计语言(如Pascal Basic和C等)开发数值控制 数值运算等软件 围绕它们的重点是算术 数据结构以及近年产生的面向对象技术 另一个体系则是通用的数据库管理软件领域(数据库应用程序的开发) 这两个体系的发展都极为迅猛 但是二者并没出现混合渗透迹象 如果使用数据库语言进行传统的算术编程 虽然也能完成相应的功能 但是其编程过程可能极为复杂 如果使用传统的编程语言进行数据库编程 通过调用专用的数据库应用程序接口函数和过程 利用这些函数和过程提供的功能 可能也能做得比较完善 但这做起来大多是极其困难的 而Delphi结合了两个体系的优点 它结合了传统的编程语言Object Pascal和数据库语言的强大功能 它即可以用于传统的算术编程又可以用于数据库编程 特别是Delphi具有强大的数据库功能 利用Delphi的数据库工具 我们根本不需要编写任何Object Pascal代码便可以创建一个简单的数据库应用

Delphi是Borland公司于 年底发布的用于开发数据库应用程序的工具 它是面向对象的 它是目前开发客户/服务器数据库应用程序的强有力的工具 Delphi在Window 以上版本的系统环境下运行 目前具有两个版本 Delphi的标准版本和客户/服务器版本 标准版本包含一个Borland Database Engine的局部拷贝 它允许用户创建能访问dBASE Paradox和Local InterBase 服务器的数据库应用 它还支持具有 ODBC 接口的数据库 Delphi的客户/服务器版本包括Borland SQL Link 它能直接访问 ORACLE SyBase 和Microsoft SQL Server Informix以及InterBase数据库服务器

Delphi可以访问多种数据库管理系统的数据库 凭借窗体(Forms)和报表(Reports) BDE(Borland Database Engine)可以访问诸如Paradox dBASE 本地InterBase 服务器的数据库 也可以访问远程数据库服务器上的数据库(如ORACLE SyBase Informix等客户/服务器数据库中的数据库) 或任何经ODBC(Open Database Connecticity) 可访问的数据库管理系统中的数据库

Delphi的数据库特性

跟其他的应用程序一样 Delphi提供了许多部件以方便地创建数据库应用程序 数据库对象的数据成员既可在设计阶段设置 也可在运行阶段通过程序代码进行设置 Delphi的部件板上提供了两页数据库应用程序开发中所要使用的部件

数据访问页(Data Access Page)上的部件用于直接访问数据库中的数据库表

数据控制页(Data Control Page)上的部件用来与用户交互 显示 修改数据库中的数据

数据库应用程序首先是利用Delphi提供的数据库部件与BDE建立联系 然后再通过BDE与数据库联系 下图阐述了Delphi的数据库工具和部件 Delphi数据库应用程序与BDE 数据源之间的关系

下表概括了Delphi的数据库特性

表 Delphi的数据库特性

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

工具和部件   主 要 用 途

──────────────────────────────────────

Data Access Components  访问数据库 数据库表 存贮过程等

──────────────────────────────────────

Data Control Components  与用户交互 提供显示 修改数据库中数据的界面

──────────────────────────────────────

Database Desktop(DBD)  建立 索引 查询数据库表以及访问 编辑来自各数据中的数据

──────────────────────────────────────

ReportSmith  建立 浏览和打印数据库表中的数据

──────────────────────────────────────

Borland Database Engine  数据库应用通过BDE访问dBASE Paradox数据库中的数据(BDE)  和本地InterBase数据库服务器中的数据

──────────────────────────────────────

BDE Configuration  建立和管理BDE与数据库建立连接时所使用的数据库的

Utility  别名

──────────────────────────────────────

Local InterBase Server  它是一个单用户 多例程的本地SQL数据库服务器 可在单机环境下用来开发或测试客户/服务器数据库应用程序 然后再将之扩展成一个访问远程数据库服务器如ORACLE SyBase Informix等

──────────────────────────────────────

InterBase SQL Link  连接Delphi数据库应用程序一本地InterBase服务器的驱动程序

Delphi上述这些特性使得我们创建数据库应用程序通过BDE能够很灵活地与 dBASE Paradox Local InterBase数据库服务器进行连接并可以方便地访问其中的数据 我们在创建一个简单的数据库应用时通过使用Delphi提供的上述工具和部件甚至可以不需编写任何程序

BDE被自动地包含在Delphi中 因此 我们在创建数据库应用程序时 不必关心BDE的有关内容 Delphi的安装程序自动为Paradox dBASE和本地InterBaseServer 安装相应的驱动程序 并建立了有关的配置 DBE Configuration Utility 可以建立应用程序与数据库的连接信息 还可以为数据库设置别名

下表列出了Delphi开发Client/Server应用程序的有关特性 这些特性扩展了 Delphi访问远程数据库的功能 如SQL数据库服务器(ORACLE SyBase Informix Microsoft SQL Server InterBase)

表 Delphi Client/server数据库特性

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

工 具   主 要 用 途

─────────────────────────────────

SQL Drivers  SQL Drivers中的SQL link和ReportSmith为Delphi数据库应用程序提供了访问远程SQL服务器的驱动程序 如访问ORACLE SyBase Microsoft SQL server Informix Intermix

 ─────────────────────────────────

lishixinzhi/Article/program/Delphi/201311/25183

你的意思是用Delphi连接oracle还是?

如果是用Delphi的话,就需要安装oracle的客户端,安装完了之后使用ADO连接

或者使用后Unidac组件连接(使用Unidac连接的话,就不用安装oracle客户端软件了)

如果有问题的话,可以给我留言!!

我没有看见过这样的书

只有一些例子介绍BDE的部署

转一个希望有帮助:

InstallShield Express for delphi制作安装程序定制BDE引擎 (转)

使用Delphi编写数据库程序,在发布程序的同时还需要发布BDE(Borland Database Engine),但BDE占用空间较大,如Delphi5就有174M之多,远比一般的程序本身要大。实际上,有些文件根本用不上,所以我们可以在发布时用Delphi附带的InstallShield Express for delphi制作安装程序来定制BDE引擎,这样就可以达到为我们的数据库应用程序“减肥”的目的。

下面介绍BDE引擎的各关键文件的作用,我们以此作为精简BDE驱动程序的依据:

一、不可缺少的文件

Blw32dll:语言驱动函数库。

Idapi32dll:BDE基本函数库。

Fareastbtl、Usabtl:远东语言及美国语言驱动程序,对中文软件不可缺少。

Idr20009dll:错误信息库。

二、数据库驱动程序(根据需要选择一个或多个)

Idasci32dll:Ascii文本数据库驱动程序函数库,如果不用Ascii文本数据库,可以不要。

Iddao32dll:Access数据库驱动程序函数库,如果不用Access数据库,可以不要。

Iddbas32dll:dBase数据库驱动程序函数库,如果不用dBase数据库,可以不要。

Idodbc32dll:ODBC数据库驱动程序函数库,如果不用ODBC数据库,可以不要。

Idpdx32dll:Paradox数据库驱动程序函数库,如果不用Paradox数据库,可以不要。

三、其它驱动程序和配置文件(根据需要选择一个或多个)

Idbat32dll:批 *** 作驱动程序函数库,如果不用TBatchMove控件或DbiBatchMove类函数,可以不要。

Iddr32dll:Data Repository驱动程序函数库,如果不用Data Repository功能,可以不要。

Idprov32dll:BDE DataSet provider驱动程序函数库,如果不用TProvider控件,可以不要。

Idqbe32dll:QBE驱动程序函数库,如果不用Query By Example,可以不要。

Idsql32dll:SQL查询驱动程序函数库,如果不用TQuery进行查询,可以不要。

Idapi32cfg:BDE配置文件,如果程序中没有特殊要求,可以不要。也可以在BDE管理器中设置正确后再分发。

四、其它文件(一般不用)

其它的BTL:其它国家和地区的语言驱动程序,可以不要。

BDE32HLP、BDE32CNT:BDE帮助文件,可以不要。

BdeAdminexe、BdeAdminHLP、BdeAdminCNT:BDE管理器及帮助文件,如果不会发生要求软件用户自己配置BDE的情况时,可以不要。

DataBumpEXE、DataBumpHLP、DataBumpCNT:数据库数据转移工具及帮助文件,可以不要。

LocalsqlHLP、LocalsqlCNT:SQL查询语句帮助文件,可以不要。

Sqllnk32HLP、Sqllnk32CNT:SQL连接帮助文件,可以不要。

根据需要选择文件后,还要写注册表文件。需要设置的注册表键值有:

数据驱动程序所在目录的设置:

HKEY_LOCAL_MACHINESoftwareBorlandDatabase EngineDLLPATH(字符串值)

语言驱动程序所在目录的设置:

HKEY_LOCAL_MACHINESoftware BorlandBLW32BLAPIPATH(字符串值)

语言驱动程序文件名:

HKEY_LOCAL_MACHINE SoftwareBorlandBLW32LOCALE_LIB#(字符串值) 其中#为编号,按顺序为0、1、2、3如:

HKEY_LOCAL_MACHINESoftwareBorlandBLW32LOCALE_LIB0="fareasstbtl" HKEY_LOCAL_MACHINESoftwareBorland BLW32LOCALE_LIB1="usabtl"

做完这些就足够了,按此办法即可有效减少BDE驱动程序的大小,例如只用TTable控件 *** 作Paradox数据库,则只要Idapi32dll、Blw32dll、Idr20009dll、Fareastbtl、Usabtl、Idpdx32dll六个文件即可。这些文件可放在任何一个目录,只要在注册表指明即可。BDE由174M减到148M,压缩一下就只有几百K了,这使程序大为减小。

下面我们就以用InstallShield Express for Delphi50来制作一个Paradox数据库应用系统的安装程序为例:

1 启动InstallShield Express for Delphi50程序;

2 设置New project对话框中有关文件目录路径,3 然后进入Setup Checklist;

4 在Set the Visual Design中设置程序名5 、程序目录、安装程序主窗口等信息;

6 在Specify Installshield objects for delphi5 中设置General Options,7 选择BDE数据库引擎;

8 在Specify Components and Files中设置Groups and Files项,9 在Program Files中加入用户的所有程序文件和数据库表文件,10 在BDE/IDAPI Files中删除除Idbat32dll、Usabtl、Idapicfg、Charsetcvb、Bantamdll、BLW32dll、Idapi32dll、Fareastbtl、Idpdx32dll、Idr20009dll、Idsql32dll以外的文件;

11 在Dialog Boxes中设置所需安装对话框;

12 在Make Registry Changes中设置Keys项,13 在HKEY_LOCAL_MACHINE中加入softwareborlandblw32和softwareborlanddatabase engine两项,14 并且在blw32的值中加入 “Blapipath ‘以上文件路径’”、“LOCALE_LIB0 ‘以上文件路径’Fareastdll”和“LOCALE_LIB1 ‘以上文件路径’Usadll”,15 在database engine值中加入“Dllpath ‘以上文件路径’”、“Configfile01 ‘以上文件路径’Idapicfg”;

16 在Specify Folder and Icons中根据实际要求设置有关项目;

17 在Run Disk Builder中设置安装盘的有关信息;

18 最后进行Test the Installation和Create Distribution Media即可完成安装程序的制作。

值得指出的是在绝大多数数据库应用中 一般都是使用数据集部件TTable TQuery或TStoredProc与磁盘上的数据库进行连接 用TDataSource部件连接数据控制部件和数据集部件 当然用户也可以自定义数据集部件 用于数据库应用当中 TTable TQuery 和TStoredProc部件中都包含一个不可见的TField类型的对象Fields Fields是一个串列表 它对应于数据库表或一个查询结果的列或字段 Fields对象是伴随着TTable TQuery 和TStoredproc部件的活动状态动态地建立的 当数据库表被关闭时 Fields 对象也随之消失 它在程序设计和程序运行过程中都是不可见的

当然也可以利用Fields Editor建立永久性的Fields对象供Delphi应用程序使用 我们将在后面的内容中详细阐述

TTable部件

利用TTable部件程序设计人员甚至可以不需要编写任何程序便可对数据库进行访问 在一个应用程序窗体中放置一个TTable部件的过程如下

在部件选择板上选择Data Access页

单击Table图标

在窗体内单击鼠标 获得一个TTable部件

为TTable部件设置有关的属性

DatabaseName属性指定要访问的数据库所在的路径名 路径名可以用别名来表示

TableName属性指定要访问数据库中具体的数据库表

Active属性设置为True时 表示打开要访问的数据库表 设置为False时 暂时不打开要访问的数据库表

缺省情况下 TTtable部件中包含了要访问的数据库表中所有的字段和记录 用鼠标双击TTable图标时 会出现一个字段编辑器(Fields Editor) 使用Fields Editor可以对TTable部件中包含的数据库表中的字段的显示格式等属性进行编辑 具体可以控制

● 建立一个永久性的字段列表 包括字段的顺序 字段的类型等 即使磁盘上实际的数据库表的表结构发生了改变 我们建立的这个永久性的字段列表也不会发生改变

● 为每个字段指定一个便于阅读和使用的名字

● 指定字段显示的顺序

● 为每个字段指定一个用于显示的字符串

● 为字段增加合法性检验

● 为了显示的需要还可以建立新的字段(如可计算的字段)具体的使用方法见后面的内容

TQuery部件

TQuery部件是我们使用SQL语言开发数据库应用程序的有力工具 因为使用SQL语言 我们可以非常方便灵活地对一个或多个数据库表中的记录进行访问 所以利用TQuery我们可以查询本地的数据库如Pà?aradox和dBASE数据库系统中的数据 我们还可以使用TQuery部件对一个远地的数据库SQL服务器进行访问 建立Client/Server模式的应用程序

在一个应用程序窗体中放置一个TQuery部件的过程如下

在部件选择板上选择Data Access页

单击Query图标

在窗体内单击鼠标 获得一个TQuery部件

为TQuery部件设置有关的属性

DatabaseName属性指定将要访问的数据库的路径名

SQL属性指定对数据库表进行访问SQL语句 它可以是一条查询语句也可以是一条修改语句或插入语句等 在对象浏览器上 单击SQL属性时 会打开一个字符串编辑器供程序设计者输入SQL语句

在这里要注意在TQuery部件中 不是用TableName 属性来指定要访问的数据库中的数据库表 而是在SQL属性中 通过SQL语句来指定将要访问的数据库表

TDataSouece部件

TDataSource部件是连接数据集部件TTable TQuery TStoredProc 和数据控制部件TDBGrid TDBEdit等的桥梁 TTable TQuery TStoredProc部件通过BDE可以实现与磁盘上的数据库连接即访问 但它们本身不能显示数据库中的数据信息 而数据控制部件如TDBGrid TDBEdit等能够提供可视化的界面 显示数据库中的数据信息 但它们不具备访问磁盘数据库的能力 正是TDataSource将这两者有机地结合起来 使得用户才能交互地对数据库中的数据信息进行查询 修改 插入 删除等 *** 作

在应用程序窗体中放置TDataSource部件的过程如下

在部件选择板上选择Data Access页

单击DataSource图标

在窗体内单击鼠标 获得一个TDataSource部件

为TDataSource部件设置有关的属性

Dataset属性指定一个数据集部件 可以是TTable TQuery或TStoredProc部件的名字

返回目录 DELPHI基础教程

       编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

Visual C++音频/视频技术开发与实战

Oracle索引技术

ORACLE G数据库开发优化指南

Java程序性能优化 让你的Java程序更快 更稳定

C嵌入式编程设计模式

Android游戏开发实践指南

lishixinzhi/Article/program/Delphi/201311/25181

以上就是关于DELPHI基础教程:Delphi开发数据库应用程序概述(二)[4]全部的内容,包括:DELPHI基础教程:Delphi开发数据库应用程序概述(二)[4]、怎样用Delphi编程实现客户端免安装Oracle、delphi如何远程连接oracle等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9666138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存