delphi数据库

2024-05-04

delphi数据库(精选十篇)

delphi数据库 篇1

在Delphi众多的优势当中,它在数据库方面的特长显得尤为突出:适应于多种数据库结构,从客户机/服务机模式到多层数据结构模式;高效率的数据库管理系统和新一代更先进的数据库引擎;最新的数据分析手段和提供大量的企业组件。

2 存取数据库

Delphi对数据库的操作主要是利用BDE(数据库引擎,Borland Database Engine的缩写)来进行。当然,通过其他方式直接访问数据库,在Delphi中也都是可以实现的。不过,对于本地数据库来说,通过BDE存取数据效率很高。

BDE是负责用户和数据库交流的中间媒介。事实上,应用程序是通过数据访问组件和BDE连接,再由BDE去访问数据库,完成对数据库的操作,而并非直接操作BDE。这样用户只需关心Delphi中的数据组件即可,不用直接和BDE打交道。数据库组件主要分为两类:“数据访问组件”和“数据控制组件”,它们和数据库的关系可用关系图1来示意。

3 Delphi常用数据库组件

3.1 数据访问组件(Data Access Component)

数据访问组件在Delphi组件面板的Data Access组件页上可以找到。这里我们应当注意:Table、Query和Storedproc三个控件,它们称为“数据集组件”,用于和数据库连接。学习者可以将这些控件视为“虚拟”的数据库,对它们的操作就可以认为是对数据库的操作。

1)Data Source控件是数据集组件和数据控制组件的连接媒介。数据控制组件是用户操作数据库中数据的界面,只有通过DataSource控件才能和数据集组件连接,从而对数据进行显示、修改、维护等操作。

2)Table控件是通过数据库引擎———BDE来存取数据库中的数据的。通过BDE将用户对数据库的操作(如添加、删除、修改等)传递给数据库。

3)Query控件是利用SQL(Structured Query Language,结构化查询语言)通过BDE来操作数据库的,和Table控件完成的功能相似,它只是采用了SQL来实现。

4)Storedproc控件是通过BDE对服务器数据库进行操作的,常用于客户/服务器(C/S)结构的数据库应用程序。

5)Data Base控件一般用于建立远程的数据库服务器———客户/服务器结构的数据库应用程序和数据库之间的连接。

6)Session控件是用于控制数据库应用程序和数据库连接的,主要用于复杂功能的实现,例如:多线程数据库程序设计。

3.2 数据控制组件(Data Control Component)

数据控制组件也可以称为数据显示组件或数据浏览组件。它们的主要功能是与数据访问组件相配合,提供给用户一个对数据进行浏览、编辑等操作的界面。数据控制组件在组件板上的Data Control页上。它们主要有:DBGrid控件、DBNavigator控件、DBTex控件、DBEdit控件、DBMemo控件、DBImage控件、DBListbox控件、DBCombo Box控件、DBCheck Box控件、DBRadio Group控件、DBLookup List Box控件、DBLookup Combo Box控件、DBRich Edit控件、DBCtrl Grid控件、DBChart控件等等。

此外,还有一些组件与数据库有关。例如,Decision Cube是一组主要用于数据统计工作的控件,以表格或图形等直观的方式表达统计结果。QReport是用来输出报表的控件,但是,根据经验来看,此控件不太适合中国人报表的习惯。此组件是Borland公司购买而来,性能不是太好,所以现在使用的不是很多。

4 Delphi平台开发数据库程序方法和步骤

4.1 设计方案

该设计方案也可以说是一个计划、大纲之类,在方案中首先要根据自己或用户的需要把程序应具备的主要功能详细列出,这是很最关键的(在软件工程中叫做“系统分析”),否则在设计完成后发现有些功能由于事先没有考虑周全,导致设计工作的重复和人力、物力资源。其次,列出程序中相关的辅助功能和一些通用功能。例如,一些用户可能对数据库软件提出数据库传输、整理、压缩之类的功能要求,所以我们在程序设计中就必须考虑这些功能;通用的一些功能如帮助文件、关于本程序等等,这些都是标准软件开发所必需的。最后,建立数据结构。根据需要实现的功能,选择相应的数据库、数据表格,以及每个数据表格应该具备多少字段、字段的类型、长度、空值的取舍,是否建立索引等。

4.2 设计初步程序流程

根据第一步的设计方案,将大致的程序流程设计出来,每个功能模块都要写出基本流程,这些主要是为以后程序的编写起到一个指导作用。当然,在实际写程序的过程中可能会有很多改动,但这个基本的程序流程会指导你在写程序时不会出现大的偏差。

4.3 准备所需编程资源

根据设计方案需要完成的功能,分析可能需要的编程资源。当然,对非专职程序员来说,这一经验不一定很多,那么就要在编写程序的时候,把经常需要参考的资料或以前编写的程序代码整理、收藏,放在一个专用文件夹中(电子版)或放在案头(纸介质类),以便于在需要时能及时查阅。如果客户提供的资料需要在编程中使用,当然更要准备好。

4.4 设计程序整体界面

根据要完成的功能,设计一个大致的界面,考虑可能用到的菜单、工具栏、状态条,采用独立的窗口还是MID窗口介面以及所有的文字等。这里无需很细致地设计界面,因为在实际写程序中介面常常根据情况进行调整,设计一个轮廓足以。

4.5 系统分析及方案解决

即使是一个编程高手,写一个程序时也会碰到这样那样的困难。为了能比较顺利完成程序设计,最好根据所需功能和程序流程来对整个程序进行框架分析(软件工程是专门研究这一问题的学科)。根据自己掌握的知识、技能分析难点问题,并找到解决方法。比如,对于一个比较复杂的查询,可能用一条SQL(Structured Query Language)语句查询不能得到所需的结果,这就需要分析一下是否有其他方法来完成这个功能:是否需要采用临时数据表格来实现,如果需要使用临时数据表格,那么如何将数据导出到临时数据表格中,这样的SQL语句如果还不会写,那么马上查找资料看看如何实现,最好找一个临时数据库来写几句代码验证一下看能否解决,如果解决了,可将代码作为资料保存备用。

参考文献

[1]John Ayres.The Tomes of Delphi(tm)Win32Core API Windows2000Edition[M].Wordware Publishing,Inc.2001.

delphi数据库 篇2

Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。

BDE(Borland Databas Engine),是Delphi中最古老的技术,从delphi 2.0加入BDE 技术以后,一直是Delphi处理数据库的事实上的标准。BDE 是一个基于驱动程序的体系结构,每一种数据格式或数据源都有一种驱动程序来驱动相近的`数据源。BDE 可以很好的支持现在最流行的ODBC API方法,ODBC是一种C/C++ 应用程序编程接口(API ),无论是对任何一种客户/ 服务器关系型数据库管理系统(RDBMS ),还是最流行索引顺序访问方法(ISAM)数据库(Jet、Foxpro)都能很好的访问。

ADO 技术是微软提出来的处理关系型数据库和非关系型数据库的新技术,它基于微软被称为OLE DB的数据访问模式,它是专门为了给大范围商业数据源提供访问而设计的,包括传统的关系型数据表、电子邮件系统、图形格式、Internet资源等。ADO 所需内存更少,更适合大流量和大事务量的网络计算机系统。

delphi数据库 篇3

关键词:大型二进制对象 image数据类型 文件流 数据库引擎

一、引言

随着信息技术的发展,越来越多的系统中需要存取图像数据,而对于图像数据的保存有两种方法:一种是将图像数据以文件形式存放在磁盘中,在数据库中只存储这些文件的路径和文件名;另一种是将图像数据和其他数据一样直接存储在数据库中。当要处理大量图像数据时,把图像数据直接存储在数据库中有许多优点:

易于管理 当图像数据与其他数据一起存储在数据库中时,图像数据与其他数据是一起备份和恢复的,这样就减少了图像数据与其他数据不同步的机会,也降低了其他用户无意中删除了文件系统中图像数据文件的风险。另外,由于图像数据与其他数据一起存储在数据库中,其插入、更新和删除可在同一个事务中实现,确保了数据的一致性。

可伸缩性 尽管文件系统被设计为能够处理大量不同大小的对象,但是文件系统不能对大量小文件进行优化。在这种情况下,数据库系统可以进行优化。

可用性 数据库复制允许在分布式环境中复制、分配和潜在地修改数据。在主系统失效的情况下,日志转移提供了保留数据库备用副本的方法。

因此,要真正做到各类数据在数据库中安全管理,研究和探索直接将图像数据存储在数据库中的方法是非常必要的。

二、 Microsoft SQL Server 系统中的 BLOB 数据及其存取机制

BLOB(binary large object,大型二进制对象)数据类型主要用于保存多媒体对象,比如图像、视频和声音。在Microsoft SQL Server系统中,BLOB可以是text、ntext或image数据类型。其中,image 数据类型用来存储变长的二进制数据,最大长度是2GB,非常适合存储图像数据。

BLOB数据在Microsoft SQL Server系统中的存储方式不同于普通的数据类型,对于普通类型的数据系统直接在用户定义的字段上存储数据值,而对于BLOB类型数据,系统开辟新的存储页面来存放这些数据,表中BLOB类型数据字段存放的仅是一个16字节的指针,该指针指向存放该条记录的BLOB数据的页面。

在Microsoft SQL Server系统中,当数据小于 8000 字节时,可以用普通的SQL语句(SELECT、INSERT、UPDATE、DELETE)来完成对数据的查询操纵,当数据大于8000字节时,Microsoft SQL Server提供了 WRITETEXT 、READTEXT和UPDATETEXT这三个函数来读取和修改数据。这三个函数的使用比较复杂,以 READTEXT 为例,其一般形式为

READTEXT {table.column text_ptr offset size} [HOLDLOCK]

其中,table.column为表中的字段,text_ptr为一个16字节的指针,offset 为偏移量,即从第几个字节开始读数据,size为要读的字节数,HOLDLOCK 为在读数据时是否允许其他用户修改该数据。

例:DECLARE @ptrval varbinary(16)

SELECT @ptrval = TEXTPTR(img_ct) FROM zy_ct WHERE id_ct = 20010101001

READTEXT zy_ct.img_ct @ptrval 1 25

但是READTEXT函数读取的数据无法直接传递回前端应用程序,本文将介绍一种使用Delphi存取Microsoft SQL Server 系统中图像数据的简单方法。在SQL Server 系统中建立表TEST,表中的字段及属性见表1。

表1 TEST的字段及属性

三、使用Delphi存取Microsoft SQL Server中的图像数据

图像数据的存储格式有很多种类,常见的有BMP、JPEG、GIF等等,如果按照每种格式去单独编写存取代码,就会使问题复杂化。但是,不论哪种格式的存盘文件,都可以看成文件“流”的形式。Delphi中的TFileStream数据类型以流的形式对字符或非字符数据进行处理,就像在内存中开辟了一个大小可变的临时缓存区。它不仅能方便地对外部文件进行读写,而且还可以将流中的全部数据直接转入数据库,可用它作桥梁完成图像数据的存取。

(一)数据集组件的选择

在Delphi 连接数据库的BDE方式中,通常数据集组件可以选择TTable或TQuery,如果使用TQuery组件存取image类型数据,不可避免地就要使用WRITETEXT 、READTEXT和UPDATETEXT这三个函数,不便于程序实现。而选择TTable组件,就可利用Delphi的强大数据引擎功能,自动完成image类型数据的存取。

(二)将图像数据保存到Microsoft SQL Server中

下面程序的功能是使用TFileStream读取图像文件“ c:\source.jpg ”,再转储到String中,然后利用TTable组件将String中的图像数据存储到数据库中。

procedure TForm1.SaveToDBClick(Sender: TObject);

var

FS: TFileStream;

ImageStr: String;

PImageStr: PChar;

begin

FS := TFileStream.Create('c:\source.jpg', fmOpenRead); //读取图像文件

FS.Seek(0, soFromBeginning);

SetLength(ImageStr, FS.Size);

PImageStr := PChar(ImageStr);

FS.Read(PImageStr^, FS.Size); //将TFileStream中的图像数据转储到String中

FS.Free;

//使用TTable连接数据库,将String中的图像数据存入数据库

Table1.Close;

Table1.Open;

Table1.Append;

Table1.FieldByName('IMAGEID').AsString := Edit1.Text;

Table1.FieldByName('IMAGEDATA').AsString := ImageStr;

Table1.Post;

end;

3.3从Microsoft SQL Server中取出图像数据

下面程序的功能是利用TTable组件读取数据库中的图像数据,并保存到String中,再使用TFileStream将String中的图像数据保存到文件“c:\target.jpg”中,然后利用TImage显示图像文件“c:\target.jpg”。

procedure TForm1.LoadFromDBClick(Sender: TObject);

var

FS: TFileStream;

ImageStr: String;

PImageStr: PChar;

begin

//使用TTable查询数据库

Table1.Close;

Table1.Open;

//将数据库中的图像数据导出到String中

ImageStr := Table1.FieldByName('IMAGEDATA').AsString;

//将String中的图像数据通过TFileStream写到文件中

PImageStr := PChar(ImageStr);

FS := TFileStream.Create('c:\target.jpg', fmCreate);

FS.Write(PImageStr^, Length(ImageStr));

FS.Free;

//使用TImage组件显示导出的图像数据

Image1.Picture.LoadFromFile('c:\target.jpg');

end;

4结束语

Microsoft SQL Server系统为保存BLOB型数据提供了存储平台,Delphi为存取这种数据提供了灵活的接口。本文介绍的用Delphi存取 Microsoft SQL Server中image类型数据的方法,不但适用于各种图像文件,同样适用于其它类型的文件。其原理同样适合Sybase、Oracle等数据库和Powerbuilder、VB等前端开发工具。

(作者单位:湖北省广播电视学校)

参考文献:

[1]闪四清.SQL Server系统管理和应用开发指南.北京:清华大学出版社,2000

delphi数据库 篇4

Step1.创建服务器端应用程序: 利用Delphi7新建一个工程文件存储为ExcelServer.dpr, 单元文件存储为Mainform.pas, 其窗体Caption设为 :“Excel数据服务 器”, 其上放置 一个Label1控件作为显示客户端登录数据库的数量 , Caption设为Hello clients…。

Step2. 创建Remote Data Module模块 : 单元文件 为AppServer.pas。点击File->Other->Multitier, 在图2显示的页面上选择Remote Data Module。

创建结束后, 运行ExcelServer程序, 将该服务器在计算机注册, 切记生成的服务器是ExcelServer.MyServer。

Step3.创建Active Libary对象: 在Step2基础上新创建一个Active Library对象。

(1)File->New->Other->Active

如图3所示。

(2) Active->COM Object->OK->

如图4所示。

(3) Class Name->list->

如图5所示。

如果List窗口中没有MSADO15.DLL, 在你的电脑中找到这个文件, 在Delphi中引用它 (project->import type library-> and ->createunit)编译器会 自动创建 一个单元 文件 (ADODB_TLB.pas), 按下ALT+F11引用ADODB_tlb单元。

(4) List->Recordset->OK->

如图6所示。

(5) Description (可选) ->OK->

如图7所示。

(6) New->Interface->

如图8所示。

(7) New->Property->

如图9所示。

至此服务器的关键类型库Type Libraly创建过程和设置任务结束, 保存所有结果, 命名为ExcelServer.tlb, 单元文件命名为AppExcelServer.pas。

此时, 在ExcelServer_TLB单元文件中声明部分自动创建了一个函数, 它对于建立Excel数据服务非常重要, 充当在服务器端打开Excel文档的任务, 是结合Ado技术连接数据库的关键。该函数为:

Function Get_TableName:_Recordset;safecall;

将用以数据集合的方式连接Excel数据源。

Setp4.单元文件引用 : 在服务器单元文件AppServer中 , 引用ADODB_TLB单元, 定义读取Excel表单数据的函数:

Step5.创建Excel客户端应用 : 利用Delphi7新建一个工程文件存储为ExcelClient.dpr, 单元文件存储为Mainform.pas, 其窗体Caption设为 : “Excel客户端应 用”, 其上放置 多个suipack控件 , 用以完成客户端各类功能。为了方便起见将它们列表如表1所示。

其中3个suiButton的事件代码非常简单, 分别列出:

运行客户端, 程序将自动启动服务器, 之后在客户端与服务器教学下完成对服务器Excel数据的基本操作结果如图10所示。

知识点回顾: 本讲中利用Remote Data Module模块创建ADODB_TBL单元 , 并注册一个服务器的应用 , 在其中定义Get_Exceltable1和.Get_Exceltable2两个连接Excel的函数 , 在其中使用了第二讲中讲解的连接串。同时在客户端, 利用RDSConnection组件成功与服务器对接 , 将服务器端的数据在客户界面上显示出来。在第4讲中将重点完善客服两端应用。

参考文献

[1]向坚持,刘相滨.MIDAS技术研究及应用[J].计算机工程与应用,2002,(15).

[2]李维.Delphi 5.X分布式多层应用系统篇[J].2000.

[3]陈豫龙.Delphi6数据库系统开发实例导航[J].2002.

[4]李长云.Delphi 6.0分布式软件开发应用实例[J].2002.

Delphi笔试题目 篇5

机械类笔试试题

1. Briefly describe what is blanking(cutting), forming, coining and emboss

ing in stamping process.

2. What is metal clading?

3. What is the purpose of adding glass fiber to thermoplastic material?

4. In contrast with metal and thermoplastic material,which has a higher co

efficient of thermal expansion(CTE).

5. The most suitable material for a integral hinge design (typical plastic

thickness=0.25 to 0.5mm at hinge)

6. Can a bending load makes both compressive and tensile stress in a membe

r?

7. What is the design criteria used in plastics catch/snap?

8. What is FEA?

9. Why is natural frequency important in vibration analysis?

10. What is the deflection equation of a cantilever beam fixed at one edge

?

EE笔试试题

1. Name 3 Vehicle Buses.

2. Name 2 possible sources of Electromagnetic interference on Electronics

Circuit ASM.

3. Wavelength for 12MHz frequency signal is____

4. Name 2 important considerations for car radio performan -ce related to

audio signal processing under multipath condition?

5. What is the typical FM receiver RF signal strength to achieve 30dB S/N

for car radio?

6. When a radio is tuned to 98.1 MHz & with a LO of 108.8 MHz, what is the

image frequency?

7. For a system with a matched impedance, what is the Reflection Coefficie

nt and SWR?

8. Which property of the output capacitor is the primary cause of Low Drop

Out(LDO) regulator loop instability?

(1)Equivalent series resistance(ESR)

(2)Effective series inductance(ESL)

(3)Capacitance value

(4)Dielectric material

9. The switching regulator is capable of:

(1)Higher power conversion efficiency

(2)Providing an output voltage that is higher than the input

(3)Generating an output boltage oppsite in polarity to the input

(4)All of the above

10. A linear regulator op Vin(max) = 10v, Vout(min) = 4.8v, Iout(max) = 2.

5mA, Iq(max) = 2.5mA, Ta(max) = 8.5摄氏度,The regulator is available in 3 pac

kages.Each package has the following thermal characteristics:

Package Rja(摄氏度/W) Rjc(摄氏度/W)

SO14 125 30

D1P8 100 52

Choose the most suitable package to handle the power dissipation requireme

nt without a heat sink and why.

软件笔试题

1. How do you code an infinite loop in C?

2. Volatile:

(1)What does the keyword volatile mean? Give an example

(2)Can a parameter be both const and volatile? Give an example

(3)Can a pointer be volatile? Give an example

3. What are the values of a, b, and c after the following instructions:

int a=5, b=7, c;

c = a+++b;

4. What do the following declarations mean?

(1)const int a;

(2)int const a;

(3)const int *a;

(4)int * const a;

(5)int const * a const;

5. Which of the following statements describe the use of the keyword stati

c?

(1)Within the body of a function: A static variable maintains its value

between function revocations

(2)Within a module: A static variable is accessible by all functions wit

hin that module

(3)Within a module: A static function can only be called by other functi

ons within that module

6. Embedded systems always require the user to manipulate bits in register

s or variables. Given an integer variable a, write two code fragments.

The first should set bit 5 of a. The second shnuld clear bit 5 of a. In bo

th cases, the remaining bits should be unmodified.

7. What does the following function return?

char foo(void)

{

unsigned int a = 6;

iht b = -20;

char c;

(a+b >6) ? (c=1): (c=0);

return c;

}

8. What will be the output of the following C code?

main

{

int k, num= 30;

k =(num >5 ? (num <=10 ? 100:200): 500);

printf(“%d”, k);

}

9. What will the following C code do?

int *ptr;

ptr =(int *)Ox67a9;

*ptr = Oxaa55;

10. What will be the output of the follow C code?

#define product(x) (x*x)

main()

{

int i = 3, j, k;

j = product(i++);

k = product(++i);

printf(“%d %d”,j,k);

}

11. Simplify the following Boolean expression

!((i ==12) || (j >15))

12. How many flip-flop circuits are needed to divide by 16?

13. Provides 3 properties that make an OS, a RTOS?

14. What is pre-emption?

15. Assume the BC register value is 8538H, and the DE register value is 62

A5H.Find the value of register BC after the following assembly operations:

MOV A,C

SUB E

MOV C,A

MOV A,B

SBB D

MOV B,A

16. In the Assembly code shown below

LOOP: MVI C,78H

DCR C

JNZ LOOP

HLT

How many times is the DCR C Operation executed?

17. Describe the most efficient way (in term of execution time and code si

ze) to divide a number by 4 in assembly language

18. what value is stored in m in the following assembly language code frag

ment if n=7?

LDAA #n

LABEL1: CMPA #5

BHI L3

BEQ L2

DECA

BRA L1

LABEL2: CLRA

LABEL3: STAA #m

19. What is the state of a process if a resource is not available?

#define a 365*24*60*60

20. Using the #define statement, how would you declare a manifest constant

that returns the number of seconds in a year? Disregard leap years in your an

swer.

21. Interrupts are an important part of embedded systems. Consequently, ma

ny compiler vendors offer an extension to standard C to support interrupts. Ty

pically, the keyword is __interrupt. The following routine (ISR). Point out pr

oblems in the code.

__interrupt double compute_area (double radius)

{

double area = PI * radius * radius;

printf(“nArea = %f”, area);

return area;

delphi数据库 篇6

关键词:delphi,数据库开发,ADO,ODBC,数据源配置

引言

Delphi将可视化编程(Visual Programming)与面向对象(ObjectOriented)的卓越优点结合,是具可视化界面的面向对象编程语言。数据库编程是Delphi最强大的优势之一。

1. Delphi数据库开发概述

Delphi自带40多个预先建立的数据库组件,提供可视化的编程环境。它包含集成的代码编辑器、数据库表单向导(Database Form wizard)、加速可浏览的数据库表单的创建、数据模块设计器(Data Module Designer)以及用于多个表单间的数据访问共享。组件面板的数据访问页(Data Access)提供用于连接数据源的组件。数据控制页(Data Controls)中的数据可视化组件用于从数据库获得数据或送数据到数据库。ADO页的组件使用ActiveX Data Objects技术通过OLE DB访问数据库信息。InterBase页的组件用于直接访问InterBase数据库。

2. Delphi数据库的主要方法

(1)BDE方法BDE(Borland Databas Engine),一直是Delphi处理数据库的事实上的标准。它是一个基于驱动程序的体系结构,每一种数据格式或数据源都有一种驱动程序来驱动相近的数据源。BDE可以很好的支持现在最流行的ODBC-API方法。

(2)ADO方法ADO技术基于微软被称为OLE DB的数据访问模式,包括传统的关系型数据表、电子邮件系统、图形格式、Internet资源等。ADO所需内存更少,更适合大流量和大事务量的网络计算机系统。ADO顶层有三个对象:Connection、Command、Recordset。Connection用以指定数据源,建立和数据源的连接。

(3)dbExpress方法dbExpress是Delphi 6.0加入的最新的数据库模块,它不使用缓存,可以快速浏览大量的数据。它一个重要的特点是交叉平台,可以和Linux数据库连接,速度快。

BDE/IDAPI一直是Delphi存取数据的引擎,是执行速度非常快的。BDE/IDAPI不管是在功能上还是执行速度方面都比ODBC好。随着微软不断的在改善数据存取的技术,从ODBC、DAO、RDO到现在的ADO。现在不管是在功能上还是执行速度上ADO相比于BDE/IDAPI表现得更好。本文在这里主要谈谈自己应用Delphi开发数据库过程中,遇到到ODBC源设置问题,以飨读者。

3. 设置ODBC源的技巧分析

很多时候程序员需要自动生成ODBC数据源,而不是指导客户打开控制面板,到底如何去做呢?这里可以考虑应用如下的Windows ODBC API函数。

由于数据库的访问方式不论DAO、ADO、ODBC或是BDE或是其它第三方的数据库连接控件,归根结底,都是一些个函数集,使用者其实完全按可以编写出自己的数据库访问方式用以替代。深入研究这些底层函数,可以提供相当地便利。SQLConfigDataSource这个函数MSDN有详细的说明,这里结合流行的SQL Server谈谈如何有技巧的调用该函数。

这是Delphi程序中调用该函数的一个实例,第一个参数是父窗口句柄,设置为0则该函数不显示任何对话框。第二个参数是操作类型,需要定义如下的操作类型常量:

要添加ODBC源,需要调用的是ODBC_ADD_SYS_DSN或是ODBC_ADD_DSN参数。第三个参数添加的是SQL Server数据库的ODBC源,所以填入''SQL Server''参数,如果需要建立Excel文件的ODBC数据源,可以填入''Excel Files(*.xls)''。

4. 总结

本文对于一般的数据库系统进行了概述,对于delphi在其数据库应用中的地位进行了详细的分析。指出了delphi应用于数据库的各种方法,并且结合笔者经验探讨了ODBC源的配置问题。很好的利用Delphi这个工具,可以大大提高数据库编程的效率与质量。

参考文献

[1]李新宇,郑丽群,吴志强.ORACLE分布式数据库及应用.计算机应用[J].2004(22):71~61.

delphi数据库 篇7

1 系统设计

整套系统以互联网为基础, 在网络平台上搭建起有关试验检测、项目管理以及数据支撑的相关系统, 不同系统之间可以实现数据的实时传送与接收。在云端搭建好数据服务器, 该服务器能够实时储存研究数据, 以便于科研人员对数据进行调取与使用, 方便科研项目的顺利进行。

2 项目数据库管理系统的开发工具

2.1 SQL Server 2012

为了保证客户能够稳定安全地运行服务器程序, 微软开发了SQL Server 2012应用平台, 在此技术的支持下, 各个公司能够保证自己信息处理的可靠性与高效性, 并且能较为显著的降低对用户的管理成本, 进而为公司创造更大的利润空间。

该平台首先能保证应用程序的可信任性, 能够保证公司的相关信息不被外传与泄漏, 进而保证了商业机密的绝对安全。其次, 由于选择了一套安全高效的信息处理手段, 因此该平台能够显著降低企业的开发成本, 创造更大的利润空间。

2.2 delphi

在此基础上, 为了确保科研项目能够有针对性的开展, 人们专门设计并推出了Delphi系统。该系统可谓继承了第三代系统的大部分优点, 在面对要处理的对象时, 能够为用户提供一套可视化程度较高的开发系统, 进而降低了科研项目的难度, 一经推出就受到了大量开发者的青睐。

在传统的编程领域, 基于VB语言的可视化编程技术一直是行业的主流, 而Delphi的出现则为编程手段注入了新的力量。由于采用了本地编译器直接生成技术, Delphi能够带来较高的程序执行效率, 在有限的硬件条件下就能实现更多的功能, 企业在使用Delphi的时候甚至不需要更换自己的硬件设备。最重要的, Delphi还是一种真正基于对象的编程语言, 由于可视化程度较高, 对广大数据库的兼容性较强, Delphi在某些领域已经取代了原本VB的地位, 成为了某些工作首选的编程语言。未来的Delphi语言必将有更大的发展空间与发展潜力。

作为一种经过了深度优化的编程语言, Delphi在编写好代码之后就能快速的转换成操作系统执行程序, 而不需要经过类似于VB语言一样复杂的转换过程。并且Delphi对数据库的支持力度是它受到很多厂商欢迎的主要原因之一, 开发者能够快速并且高效的调用数据库中的数据, 无需进行复杂的转换就能提升数据的利用效果。因此, 在数据库系统、应用程序等的开发工作中, Delphi编程语言得到了广泛的使用。

作为一种全新的可视化编程语言, Delphi能在Windows系统下实现快速高效的应用程序开发工作。由于一定程度的参考了Windows系统高质量的可视化交互方式, 开发者不需要进行过多的培训就能掌握Delphi编程技术的精髓。

2.3 Delphi的基本形式

作为一种基于Pascal语言而经过了深度改进的编程方式, Delphi与Pascal语言之间其实有着较大的区别。采用Delphi语言所编制的程序实际上只是提供了一个可编程的骨架, 用户只需要根据自己的需求在骨架上加入具体的程序进行运行即可, 但是从根本上来说并没有改变该骨架的任何性质。这种基于应用程序的开发方式较为简单便捷, 对不同水平的开发者都较为亲和, 因此得到了广泛的认可。

在“面向对象的程序设计”理念的指导下, 诞生了Delphi语言这种优秀的编程方式。面向对象的程序设计理念主要利用了代码的重复性, 能够较好的模拟出现实世界的具体环境, 能够自上而下有条理的完成编程工作, 因此最终得到的程序也有较强的条理性, 不容易出错。而用户在加入了扩展语句之后, 能够提升编程程序的宽度, 让它实现不同的功能, 直接降低了很多工作的复杂性, 进而使原本枯燥的编程变成了一个有趣并且轻松的工作。

3 结语

笔者将Delphi语言称为编程史上的一次革命, 并不是无稽之谈, 而是有切切实实的根据的。作为一种极大地提升了应用程序处理工作能力的编程语言, Delphi在面向对象的编程环境中有着较强的应用前景。但是开发者必须要明白在面向非对象的开发环境中, 不能过多的依赖Delphi语言, 不然所带来的不仅不是良好的编程体验, 最终编写出来的程序无法运行都是有可能的。

摘要:大量的科研项目需要耗费大量的人力与财力资源, 为了有效提升科研项目的开展水平, 确保科研人员在进行查找资料以及统计信息时能快速地完成工作。为了达到这样的结果, 一般会采用Delphi数据库管理系统, 通过该系统所提供的数据处理能力来对海量的数据进行处理。在此基础上, 建立起一套集成了项目管理、资料的自行处理以及数据统计等常用功能在内的信息处理系统图, 在短时间内能够实现信息的高质量与高效处理。在这样一套系统的帮助下, 科研人员能够解放自己的双手, 让计算机来完成复杂的数据处理工作, 进而提升科研工作的质量与效率。

关键词:项目数据库,Delphi,计算机软件,管理系统

参考文献

[1]冯超, 周步祥, 林楠等.Delphi和GAHP集成的综合评价方法在电动汽车充电站选址最优决策中的应用[J].电力自动化设备, 2012, 32 (9) :25-29

[2]王建勋, 吕群芳, 刘会金等.基于Delphi和Matlab混合编程的配电网无功优化软件设计[J].电力自动化设备, 2011, 31 (4) :112-115

delphi数据库 篇8

上一讲中, 利用Delphi ADO实现了基于ODBC数据源的数据库文档打开和显示等操作, 本讲将从数据服务器的应用角度的实际, 介绍标准组件和ADO方法和技术。ADO技术在使用过程中, 更具灵活性, 在多层数据库应用开发中使用更为普遍。为了将ADO的这种技术说清楚, 以下分两节来介绍。

1 ADO 连接串生成

在Delphi中ADOTable, ADODataSet, ADOQuery和ADOConnection控件几乎都能采用数据连接串的连接到数据表, 要用Delphi中的ADO系列控件访问Excel数据文件, 首先应该建立一些基本概念。需要将一个Excel数据文件想象为一个关系数据库, Excel文件中的每个工作表就对应该数据库中的一个表, 而工作表中的每一列当然就是表的列了。然后, 按照下面的秘诀进行就可以完成你想要开展的工作。

(1) 在第一讲程序SuiPageControls的“课程”页面, 在窗体添加一个AdoConnection控件。在其上完成Excel文件的连接。

(2) 构建连接数据源 : 设置ADOConnection的Connection String属性的OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider (这本来是用于连接Access数据库的驱动程序 , 但也可打开Excel文件), 按“下一步”按钮。

(3) 选择数据库名称 : 选择时注意 : Excel的扩展名是 *.xls, 而默认文件类型是Microsoft Access数据库 ( *.mdb) , 就选择“全部文件 (*.*)”吧, 接着选择要连接的Excel文件, 如果在当前路径, 就直接填入“学期选课总表.xls”。

(4) 在“所有 ”选项卡中找到“Extended Properties” ,双击它或 者按“编 辑值”按 钮 , 设置Extended Properties为“Excel 8.0”。如图1所示。

(5) 返回“连接” 选项卡 , 按“测试连接”按钮 。测试连接成功。

最后, 设置完成后的ConnectionString中的各项主要参数为:

上述5个步骤就完成用ADO连接Excel文件的过程, 其中Extended Properties=Excel 8.0参数正确与否是最为关键的, 如果此参数如果设置不正确, 将导致连接Excel文档不成功。

2 ADO 操作 Excel 数据文档

为了体会ADO几种连接效果, 接着在窗体上加入ADOTa ble, ADODataSet和ADOQuery控件 , 并将连接 指向刚才 的ADOConnection, 当然可以直接设置ADOTable, ADODataSet或ADOQuery的ConnectionString属性, 会得到不同连接结果。

2.1 ADOTable 设置

(1) ADOTable的TableName属性值 : 系统自动生成Excel的Sheet1$, Sheet2$和Sheet3$。直接将Active设置成true, 系统会报告SQL语句格式错误等信息。

(2) 找到TableDirect属性 , 设置为True。因为访问Excel文件是直接的数据文件访问, 不是通过SQL语句来操作游标访问的。接着将Active设置成true。设置成功。

(3) 可以不使用TableDirect属性, 将TableName属性中的课程$, 教师$和学生$分别改成 [课程$], [教师$], [学生$], [总表$]。此时 , TableName属性必须手工加上“[]”符号 , 请读者留意。

2.2 ADODataSet 设置

此组件功能是非常强大的, 通过ADODataset可以直接与一个表进行联接, 也可以执行SQL语句, 还可以执行存储过程, 可以说集ADOTable, ADOQueyr等的功能于一身。

(1) 对于ADODataSet, 只需要将CommandType属性设置为cmdTableDirect, 选择工作表, Active设置成true就成功了。

( 2) 也可以将CommandType属性设置 为cmdTable, 将CommandText属性中改成 [课程$], [教师$], [学生$], [总表$]。

ADODataSet是本次开发服务器端的的一个主要连接构件 , 所以关于它的属性在这里需要进一步介绍, ADODataSet控件连接数据源后, 既可以像TTable控件那样从一个或多个数据表中读取数据, 又可以像TQuery那样在多个数据表中灵活地选择字段。实现这个目的主要依靠ADODataSet的两个属性, 即CommandType和CommandText, CommandType属性用来指定控件的命令类型, CommandText用来指定控件要执行的命令。特别是, 当CommandType属性值为cmdTableDirect, 表示TADODataSet控件操作的是一个数据表, 此时CommandText就变成一个下拉框, 里面存放了当前连接到可以访问的所有的数据表名, 从中选择一个T ADODataSet控件就返回了该数据的所有字段。同样要注意当CommandType属性值为cmdTable时, CommandText下拉框中数据表名, 在使用时必须手工添加“[]”括号。

当CommandType属性值为cmdText时, T ADODataSet控件就好像是TQuery控件, 它要执行一条SQL命令语句并返回执行结果。这时就要在CommandText里编写SQL命令了。它在对象观察器里单击CommandText属性旁的省略号按钮, 则打开如图2所示的SQL命令编辑窗口。

所形成的这行Select * from [教师$] Where教师 = ' 闫海忠语句执行后就完成了一次查询, 结果返回到TADODataSet中来。(注意Cursor Type自动变为ctStatic)。

2.3 ADOQuery 设置

SQL属性如下:

select * from [课程$]

至此, 已经完成了ADO标准组件与Excel文档的连接任务 , 接下来就 再添加一 个SuiDbGrid和一个DataSource, DataSource将Excel的结果显示出来。

(发现工作表名后面都要多加一个$符号 , 还有就是打开ADOTable, ADODataSet或者ADOQuery以后 , 它们的CursorType自动变成ctStatic。)

为了提高本程序通用性, 可添加两个suiCombox控件, 分别用来控制打开方式 (cmdText, cmdTable和cmdTableDirect) 和选择表 (课程$,教师$, 学生$和总表$)。以cmdTableDirect打开总表$Excel表单的结果如图3所示。

利用可视化ADO控件的最大好处就是相关程序代码比较少, 甚至不用代码。本讲中也是如此。仅用到少量代码, 即文档打开按钮的事件代码:

心细的读者已经发现, 既复习以前所学的, 又尝试了不同新的连 接方法 , 非常有益 于加深记 忆。更重 要的所有ADOTable, ADODataSet或者ADOQuery等控件在 不使用ADOConnection控件的时候 , 同样可以构建独立的数据库连接串, 使之功能更加合理。通过探索, 又总结出了更为简便和灵活的连接MS Excel文档数据字串和方法。

最后就以ADODataSet连接为例来介绍这种强大字串的应用技术。在窗体上在加入一个suiButton按钮, 其Caption属性设为“自定义连接串…” ,该按钮的单击事件代码为:

此段代码的功能是将应用程序中数据文档连接方法直接用字符串来表示, 并将课程总表的内容在数据单元中(suiDbgrid1) 显示出来, 并通过代码自动调整单元的显示宽度。代码运行及效果, 请大家自行执行程序就能体会到。

知识点回顾: 连接Excel方法不少, 但最为便捷和灵活的方法是ADO的字串方法。在此列举了两种途径的连接技术, 都比较方便。但请大家注意, 第一, 代码中利用了ExtractFilePath () 将应用程序和数据文档所在的目录位置读取出来 (数据存放于主程序下DATA目录中), 对于应用程序来讲会有不少好处。第二, 这种连接字串比起系统提供的连接方法显得简洁易懂, 方便应用程序的移植和部署。

delphi数据库 篇9

Matlab是以矩阵和阵列为基本编程单元的科学工程计算语言, 它在矩阵和数值计算、信号处理、系统识别、神经网络等许多方面得到了广泛的应用。Matlab的计算功能强大, 但处理数据量较大, 交互性能较差, 效率较低。SQL Server是一个高性能的关系型数据库, 具有数据库创建、开发、设计及管理功能, 具有动态的数据库存储机制。Delphi是面向对象的pastel语言, 它采用可视化的集成开发环境 (IDE) , 具有易用性、代码输入量小、开发效率高、有强大的数据库引擎 (BDE) 、支持动态库调用、Active X组件等优点。因此, 将Delphi的灵活高效的编程能力、SQL Server高性能的关系数据库和Matlab的计算能力三者有机的结合起来, 实现多系统混合编程, 提高工作效率。

2 常用Delphi访问SQL Server数据库的方法

DELPHI提供的数据库工具BDE, 不用写一条语句, 就可以完成一个基本数据库表的创建、录入、删除、修改等功能, 不仅提供了与本地数据库的连接方法, 而且提供了与C/S方式数据库的连接方式, 支持各种大型数据库的连接。以下介绍三种常用连接方法。

2.1 利用Delphi提供的BDE进行连接

该方法为多数DELPHI程序设计者采用。具体步骤如下:

2.1.1 安装DELPHI和SQL Server客户端程序。

2.1.2 利用BDE管理工具为服务器上的

SQL数据库设置数据库类型 (一般为MSSQL) 、别名 (由用户给定, 在BDE中唯一) 。

2.1.3 为第二步的别名设置各种参数。

主要设置Database Name (数据库名) 、LANGDRIVER (语言驱动程序) 、Server NAME (SQL服务器的机器名) 、USER NAME (用户名) 四项。

2.1.4 在设定完成以后, 便可利用DELPHI提供的各种数据库控件进行数据库的操作。

2.2 利用ODBC与SQL Server连接, 此方法的具体步骤如下:

2.2.1 配置ODBC的配置文件。

在WIN-DOW目录下, 文件ODBCINST.INI列出了ODBC的驱动器, 文件ODBC.INI列出了ODBC的数据资源, 用ODBCADMIN或者文本编辑器来修改。

2.2.2 配置ODBC的数据源。选择增加数据源, 增加后数据源名便会出现在BDE中。

利用以上两步就完成ODBC与SQL Server的连接, 其连接方式主要还是通过BDE来实现的, 其数据库查询速度同BDE一样。

2.3 利用SQLServer提供的API接口函数完成与SQL的连接

利用Delphi提供的Tdump.exe可以从SQLServer的NTWDBLIB.DLL动态链接库中获得其所有函数, 由此可以完成Delphi与SQL Server的连接。此方法的具体步骤如下:

2.3.1 在DELPHI中声明NTWDBLIB.DLL动态链接库中的所有函数。

2.3.2 用DBINIT来初始化应用程序。

DBINIT函数应在其他API接口函数调用之前调用, 在Delphi程序的FORM_CREATE () 中调用DBINIT, DBINIT函数没有入口参数, 返回字符串型的API版本号。

2.3.3 DELPHI程序被初始化后, 便可以通

过DBLOGIN注册、DBOPEN打开一个或多个DELPHI与SQL Server的连接。

2.3.4 在建立连接之后, 在DELPHI中可以使用数据库命令对数据库进行各种操作。

2.3.5 在应用程序结束之前, 调用DBEXIT关闭所有与SQL Server的连接。

3 常用Delphi与Matlab之间的接口实现方法

实现Delphi与Matlab之间的接口, 关键在于实现两者间的数据交换。以下介绍几种常用的方法。

3.1 利用文件传递数据

利用文件传递数据是一种简单实用的方法。实际中使用文本文件和dat文件进行数据传递。这种方法可以把M文件编译成可独立执行的EXE文件, 该EXE文件可读取其他语言数据文件的数据, 经过计算后, 将结果放到该文件中, 然后其它语言再读出计算结果。这样避免在其他语言中进行复杂的数值计算。

3.2 利用Active X技术

Active X是由Microsoft提供的一种用于组件集成新协议。Matlab支持Active X组件的嵌入, 支持Active X自动化控制端协议, 通过Active X技术与Delphi做接口。对于Matlab自动化服务器有3种命令:Execute (执行命令) 、PutFull Matrix (从工作空间获取数据) 、Get Full Matrix (向工作空间输出数据) 。Delphi提供两个函数用于Active X接口和对象编程:Get Active Ole Object和Create Ole Object, 其中"Get Active Ole Object"用于访问当前运行的Active X对象表, 返回指定的Active X对象;Create Ole Object用来创建指定的、未初始化的Active X对象。

3.3 利用Mideva平台

Mideva是Mathtools公司推出的一个强大而完备的M文件解释和开发环境。该软件平台有为多种编程语言开发的不同版本。Mediva具有编译转换功能, 能够将Matlab函数或编写的Matlab程序转换为c++形式的DLL, 这样在Delphi中调用该动态库函数来实现混合编程。要不必依赖Matlab环境, 则需要有动态链接库mdv4300.dll和ago4300.dll的支持。

3.4 利用com组件技术

com是component object module的简称, 它是一种通用的对象接口, 任何语言只要按照这种接口标准, 就可以实现调用。Mat1ab推出的com builder需要借助于外部的编译器才能把Matlab的程序做成com组件, 供其他语言调用。com builder目前支持的编译器有:BC++builder, Microsoft Visual Studio 6.0, Microsoft Visual Studio.net等。设置Matlab com builder所使用的外部编译器, 可以通过在Matlab的command window中输入命令MBuilder-setup来实现编译器的设置, 具体步骤只要按照Matlab提示进行即可。

4 结论

本文阐述了通过Delphi把Matlab和SQL Server的集成的常规方法, 这样有助于提高系统的开发效率, 能够良好的管理、浏览实验中的数据, 实现混合编程, 有助于提高工作效率, 在实际工作中具有一定的价值。

摘要:介绍了Delphi与SQL Server、Delphi与Matlab之间的程序接口方法, 列举了三者接口的编程方式, 并实现多系统混合编程, 提高了系统的开发效率和运行速度, 实现功能全面、界面友好、操作方便, 并解决了实际工作中存在的一些问题。

关键词:Matlab,Delphi,SQL Server,ActiveX

参考文献

[1] (美) JEFFRY L.BYRNE.SQL Server6·5.参考手册[M].北京:机械工业出版社, 1997.[1] (美) JEFFRY L.BYRNE.SQL Server6·5.参考手册[M].北京:机械工业出版社, 1997.

[2]姚庭玉等.精通DELPHI[M].北京:电子工业出版社, 1997.[2]姚庭玉等.精通DELPHI[M].北京:电子工业出版社, 1997.

[3]佟刚, 任飞.基于Delphi实现Matlab调用的方法[J].沈阳航空业学院学报, 2002, 3 (19) .[3]佟刚, 任飞.基于Delphi实现Matlab调用的方法[J].沈阳航空业学院学报, 2002, 3 (19) .

delphi数据库 篇10

在三层C/S数据库应用系统中,数据库服务器主要由专门的数据库管理系统实现,Delphi主要是通过Data Snap技术来实现客户端和应用服务器端的开发。三层数据库应用系统的模型可以用图1表示。

从图1可以看到,应用服务器通过BDE与数据库服务器连接,并从数据库存取数据,然后由TData Set Provider组件把读取的数据集压缩并切割成一段一段的数据包,通过各种协议如DCOM、TCP/IP、HTTP传送到客户端。客户端上的组件如TDCOMConnection,TScocket Connection,TWeb Connection把接收到的数据包还原成完整的数据集传给程序中的TClient Data Set组件,再通过TData Source组件把TClientData Set组件和Data Controls组件连接起来,就可以在数据控制组件中显示和修改数据集的内容。

在开发过程中,需要一些专门的组件:

(1)远程数据模块,位于应用服务器端,可作为COM服务器让客户程序访问接口;

(2)TData Set Provider组件,位于应用服务器端,主要功能是为客户端提供IApp Server接口;

(3)TClient Data Set组件,位于客户端,主要作用是访问应用服务器端的IApp Server接口,从而获取在客户端使用的数据集;

(4)Data Snap组件,位于客户端,功能是定位应用服务器和IApp Server接口,建立客户端与应用服务器的连接。

2 开发三层C/S数据库应用系统的步骤

(1)在数据库服务器上建立需要的数据库;

(2)建立应用服务器;

(3)建立客户端应用程序。

三层数据库应用系统中,主要数据库有SQL Server、My SQL、Oracle等。数据库的建立方法因数据库管理系统的不同而不同,在此不讨论步骤(1)。

2.1 建立应用服务器

(1)使用File菜单下的New Application建立一个新的应用程序;

(2)增加一个远程数据模块,执行File→New→Other菜单命令,在″New Items″对话框中选中Multiter,双击Remote Data Module,设置Co Class Name为需要的名称,设置Instancing及Threading Module为默认值;

(3)在远程数据模块上设置供客户端访问的数据集如增加Ttable、TDatabase、TQuery等组件;

(4)添加一个TData Set Provider组件,把Data Set属性设置为添加的数据集组件名;

(5)保存文件,编译并运行应用服务器程序以注册应用服务器程序。

2.2 建立客户端应用程序

(1)使用File菜单下的New Application建立一个新的应用程序;

(2)根据连接所使用的协议来选定一个或多个Data S-nap连接组件(如DCOM协议选择TDCOMConnection组件,TCP/IP协议选择TScocket Connection组件,HTTP协议选择TWeb Connection组件),并添加到数据模块中;

(3)设置Data Snap连接组件的属性来定位到应用服务器所在的计算机(Computer Name、Address和Port等)和应用服务器(Server Nme、URL等);

(4)把一个或几个TClient Data Set组件放在数据模块上,设置Remote Server属性指定一个Data Snap连接组件,设置Provider Name属性指定应用服务器上的TData Set Provider组件,实现客户端与应用服务器的通信;

(5)把TData Source组件放到数据模块上,设置Data S-et属性指定TClient Data Set组件。再为应用程序中的窗体添加相应的数据控制组件,设置数据控制组件的Data Source属性为TData Source组件名,实现使用数据控制组件来浏览和修改数据。

3 三层结构之间关系的建立

3.1 应用服务器与数据库服务器的关系

Delphi中使用数据库引擎BDE来建立应用服务器与数据库服务器的关系。下面以SQL Server数据库服务器加以说明:建立一个BDE别名,设置Server Name、Host Name、Data Base Name、Query Mode等;然后在应用服务器的Remote Data Module中的数据访问控件中指定Data Base Name属性为相应的BDE别名就可建立这两层结构的关系。

3.2 应用服务器与客户端的关系

应用服务器与客户端的关系在客户端的Data Module中建立:先设置数据访问控件的Remote Server属性指定一个连接元件;再由连接元件的Server Name指定相应的应用服务器,最后设置数据访问控件的Provider Name属性以建立与应用服务器的联系。

4 结束语

采用三层C/S结构,开发效率较高,开发的系统具有较好的可行性,运行情况较好。

参考文献

[1]侯太平,童爱红.Delphi数据库编程[M].北京:清华大学出版社,2004.

[2]张玉珍,黄东.浅析多层结构及其在Delphi中的实现[J].北京:计算机工程与设计,2002,6(23):35-37.

上一篇:空调调节技术下一篇:虚拟企业运作风险管理