当前位置:首页 » 数据仓库 » delphi建数据库实例
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

delphi建数据库实例

发布时间: 2023-01-06 07:29:17

A. Delphi建立数据库

你现在问的是什么啦, 现在基本的书里面都是有的!! 网上还有教程的

B. Delphi程序中怎样创建一个Access数据库

如果是创建一个 access 数据库,最简单的办法是先用 access 软件建立一个空的 access 数据库文件(*.mdb),然后再程序中复制到指定文件夹中。

也可以尝试使用 Ole 建立,以下是示例代码:

procereTForm1.Button1Click(Sender:TObject);
var
CreateAccess:OleVariant;
begin
CreateAccess:=CreateOleObject('ADOX.Catalog');
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d: est.mdb');
end;


注意:建立数据库,与建立数据库中的表,不是同一种操作。

C. 关于DELPHI动态数据库

在Delphi中动态建立数据库结构
--------------------------------------------------------------------------------

一、问题的提出
在程序运行过程中动态建立数据库结构是我们编写功能通用的数据库管理系统常见
的问题。通用数据库管理系统开发的基本思路是:系统允许用户自行设定管理对象的数据
库结构,然后通过算法和编程技巧,在用户设定完成后动态创建管理对象的数据库结构和
完成系统功能的一些其它数据,这样可以满足不同用户对管理系统管理项目的不同要求,
进而达到通用的目的。因此,通用数据库管理系统开发的关键是系统能否动态地创建数据
库结构。我们熟悉的Foxbase+、Foxpro等语言,均提供了动态创建数据库结构的命令或过
程。
但是,在许多资料和书籍中,没有介绍用Delphi如何动态建立数据库结构,给我们开发
一些功能通用的数据库管理系统带来了不便。那么如何在Delphi中动态建立数据库结构
呢?本文是作者在查阅大量资料,经过反复实践的基础上得出的在Delphi中动态创建数据
库结构的方法。
二、设置Delphi数据库配置程序
在Delphi中要进行数据库管理必须先设置好数据库配置程序BDE,所有对数据库的操
作,最后都要通过BDE去完成。下面以最常见的Dbase数据库为例来配置Delphi的数据库引
擎BDE。
1. 进入Delphi的集成开发环境IDE(Integrated Development Environment),在Dat
abase菜单下选择Explore,出现sql Explorer窗体,在Object菜单下选择BDE Administra
tor。
2. 出现BDE Administrator窗体后在Database页上选择Dbase,在Definition页中将
Type项设为Standard;将Default Driver项设为Dbase;将Path项设为一工作目录名(如:D
:\MYNAME)。以上过程即为数据库的别名(Aliases)设置,这在以后Delphi的程序开发过程
中要经常用到。
3. 选择Configration页,在Drivers的Native项中选择Dbase,在Definition页中将T
ype项设为File;将Langdriver项设为DBASE CHS CP936;将Level项设为5。
4. 完成上述工作后,在Object菜单中选择Save as Configration,按出现的对话框要
求将以上的设置保存好。至此,数据库的基本配置工作就完成了,我们就可以进行下面的
工作了。
三、动态创建数据库结构方法
在Delphi中动态创建数据库结构有两种方法。
方法一:使用Table组件的CreateTable方法。步骤如下:
1. 进入Delphi的IDE建立一个新项目文件和新窗体(Form1)单元文件(unit1.pas)。
2. 在Form1上加入Table1、Edit1、Edit2、Button1组件。将Button1组件的Captio
属性设为‘创建’。
3. 用鼠标双击Button1进入Unit1.pas单元文件,在光标处加入下列代码。
with table1 do
egi
active:=false
databasename:=‘dbase'
tablename:=‘my.dbf'
tabletype:=ttdbase
fielddefs.clear
fielddefs.add(edit1.text,ftstring,10,false)
fielddefs.add(edit2.text,ftinteger,0,false)
createtable
end
4. 按F9键编译运行,在Edit1处输入一字段名称:ZD1,在Edit2处输入一字段名称:ZD
2,然后点击"创建"按钮,程序将在D:\MYNAME目录中产生一个名为MY.DBF的数据库文件,用
Database Desktop查看文件结构如下:
FieldName
Type
Size
Dec
ZD1 C 10
ZD2 N 11
方法二:使用Query组件,用结构化查询语言SQL(Structured Query Language)语句创
建,步骤如下:
1. 同方法一之步骤1。
2. 在Form1窗体中加入Query1、Button1组件,将Query1的Database Name属性设为‘
Dbase’;将Button1组件的Caption属性设为‘创建’。
3. 在Query1的SQL属性单击,出现Sting List Editor窗口,在该窗体中输入以下SQL
语句:
Create Table My(
ZD1 Char(10),
ZD2 Numeric(10,2))
4. 双击Button1进入Unit1.pas单元,在光标处加入下列代码:
Query1.ExecSQL
5. 按F9键 编译运行,在"创建"按钮处单击即可产生一个名为MY.DBF的数据库文件,
存放在D:\MYNAME目录中,用Database Desktop查看其结构如下:
FieldName Type Size Dec
ZD1 C 10
ZD2 N 10 2
以上所介绍的操作和程序均在Windows98操作系统下,Delphi 3.0 C/S版上调试运行
通过。

D. delphi 怎样建数据库

/*
创建数据库
*/CREATE
DATABASE
CommunityON
(
NAME
=
Community_dat,
--
数据名称
FILENAME
=
'e:\MSSQL7\data\Communitydat.mdf',--
文件名与路径
SIZE
=
10MB,
--
数据大小
MAXSIZE
=
50MB,
--
最大空间
FILEGROWTH
=
5MB
)
--
数据每次扩容的空间LOG
ON(
NAME
=
Community_log,
--
日志名称
FILENAME
=
'e:\MSSQL7\Communitylog.ldf',--
文件名与路径
SIZE
=
5MB,
--
日志空间
MAXSIZE
=
25MB,
--
最大空间
FILEGROWTH
=
5MB
)
--
数据每次扩容的空间GO

E. Delphi 7使用代码创建数据库

procere TForm1.Button1Click(Sender: TObject);
var
rsTmp: TADOQuery;
begin
rsTmp:= TADOQuery.Create(nil);
try
try
rsTmp.Connection:= Conn;
rsTmp.Parameters.Clear;
rsTmp.SQL.Add:= 'Create DataBase 学生管理系统;';
rsTmp.SQL.Add:= 'USE 学生管理系统;';
rsTmp.SQL.Add:= 'Create Table 学生信息(姓名 nVarChar(10), 学号 nVarChar(30), 年龄 Int, 班级 nVarChar(20))';
rsTmp.ExecSQL;
except
On E: Exception do
begin
ShowMessage(e.Message);
end;
end;
finally
rsTmp.Free;
end;
end;

F. 怎样用DELPHI程序建数据库表的结构

建议参考以下资料:

DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)

以下代码在WIN2K,D6,MDAC2.6下测试通过,
编译好的程序在WIN98第二版无ACCESS环境下运行成功.

//在之前uses ComObj,ActiveX
//声明连接字符串
Const
SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
+'Jet OLEDB:Database Password=%s;';

//=============================================================================
// Procere: GetTempPathFileName
// Author : ysai
// Date : 2003-01-27
// Arguments: (None)
// Result : string
//=============================================================================
function GetTempPathFileName():string;
//取得临时文件名
var
SPath,SFile:array [0..254] of char;
begin
GetTempPath(254,SPath);
GetTempFileName(SPath,'~SM',0,SFile);
result:=SFile;
DeleteFile(result);
end;

//=============================================================================
// Procere: CreateAccessFile
// Author : ysai
// Date : 2003-01-27
// Arguments: FileName:String;PassWord:string=''
// Result : boolean
//=============================================================================
function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
//建立Access文件,如果文件存在则失败
var
STempFileName:string;
vCatalog:OleVariant;
begin
STempFileName:=GetTempPathFileName;
try
vCatalog:=CreateOleObject('ADOX.Catalog');
vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
DeleteFile(STempFileName);
except
result:=false;
end;
end;

//=============================================================================
// Procere: CompactDatabase
// Author : ysai
// Date : 2003-01-27
// Arguments: AFileName,APassWord:string
// Result : boolean
//=============================================================================
function CompactDatabase(AFileName,APassWord:string):boolean;
//压缩与修复数据库,覆盖源文件
var
STempFileName:string;
vJE:OleVariant;
begin
STempFileName:=GetTempPathFileName;
try
vJE:=CreateOleObject('JRO.JetEngine');
vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),
format(SConnectionString,[STempFileName,APassWord]));
result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
DeleteFile(STempFileName);
except
result:=false;
end;
end;

2.ACCESS中使用SQL语句应注意的地方及几点技巧
以下SQL语句在ACCESS XP的查询中测试通过
建表:
Create Table Tab1 (
ID Counter,
Name string,
Age integer,
[Date] DateTime);
技巧:
自增字段用 Counter 声明.
字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行.

建立索引:
下面的语句在Tab1的Date列上建立可重复索引
Create Index iDate ON Tab1 ([Date]);
完成后ACCESS中字段Date索引属性显示为 - 有(有重复).
下面的语句在Tab1的Name列上建立不可重复索引
Create Unique Index iName ON Tab1 (Name);
完成后ACCESS中字段Name索引属性显示为 - 有(无重复).
下面的语句删除刚才建立的两个索引
Drop Index iDate ON Tab1;
Drop Index iName ON Tab1;

ACCESS与SQLSERVER中的UPDATE语句对比:
SQLSERVER中更新多表的UPDATE语句:
UPDATE Tab1
SET a.Name = b.Name
FROM Tab1 a,Tab2 b
WHERE a.ID = b.ID;
同样功能的SQL语句在ACCESS中应该是
UPDATE Tab1 a,Tab2 b
SET a.Name = b.Name
WHERE a.ID = b.ID;
即:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后.
上例中如果Tab2可以不是一个表,而是一个查询,例:
UPDATE Tab1 a,(Select ID,Name From Tab2) b
SET a.Name = b.Name
WHERE a.ID = b.ID;

访问多个不同的ACCESS数据库-在SQL中使用In子句:
Select a.*,b.* From Tab1 a,Tab2 b In 'db2.mdb' Where a.ID=b.ID;
上面的SQL语句查询出当前数据库中Tab1和db2.mdb(当前文件夹中)中Tab2以ID为关联的所有记录.
缺点-外部数据库不能带密码.

在ACCESS中访问其它ODBC数据源
下例在ACCESS中查询SQLSERVER中的数据
SELECT * FROM Tab1 IN [ODBC]
[ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
外部数据源连接属性的完整参数是:
[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]
其中的DRIVER=driver可以在注册表中的
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\
中找到

ACCESS支持子查询

ACCESS支持外连接,但不包括完整外部联接,如支持
LEFT JOIN 或 RIGHT JOIN
但不支持
FULL OUTER JOIN 或 FULL JOIN

ACCESS中的日期查询
注意:ACCESS中的日期时间分隔符是#而不是引号
Select * From Tab1 Where [Date]>#2002-1-1#;
在DELPHI中我这样用
SQL.Add(Format(
'Select * From Tab1 Where [Date]>#%s#;',
[DateToStr(Date)]));

ACCESS中的字符串可以用双引号分隔,但SQLSERVER不认,所以为了迁移方便和兼容,
建议用单引号作为字符串分隔符.

G. 用Delphi开发数据库程序经验三则

一 建立临时表 数据输入是开发数据库程序的必然环节 在Client/Server结构中 客户端可能要输入一批数据后 再向服务器的后台数据库提交 这就需要在本地(客户端)建立临时数据表来存储用户输入的数据 待提交后 清除本地表数据 这种方法的好处是 提高输入效率 减小网络负担

由于用户一次输入的数据量一般情况下较小(不会超过几百条记录) 所以临时表可以建立在内存中 这样处理速度较快 方法 使用查询控件(TQuery)第 步 在窗体上放上查询控件(TQuery) 设置好所连接的数据表 第 步 使TQuery CachedUpdates=True; TQuery RequestLive=True;第 步 在原有的SQL语句后加入一条Where子语句 要求加入这条Where子语句后SQL查询结果为空 例如 SELECT Biolife ″Species No″ Category Common_Name Biolife ″Species Name″ Biolife ″Length (cm)″ Length_In Notes Graphic FROM ″biolife db″ Biolifewhere Biolife Category=′A′ and Biolife Category=′B′这样临时表就建立完成了

方法 使用代码创建临时表代码如下 function CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet;var TempTable:TClientDataSet;begin TempTable:=nil; Result:=nil; if AFieldDefs<>nil then begin try TempTable:=TClientDataSet Create(Application); TempTable FieldDefs Assign(AFieldDefs); TempTable CreateDataSet; Result:=(TempTable as TDataSet); Except if TempTable<>nil then TempTable Free;

Result:=nil; raise; end;end;end;

在程序中按如下方法使用 procere TForm Button Click(Sender: TObject);var ADataSet:TDataSet;begin ADataSet:=TDataSet Create(Self); with ADataSet FieldDefs do begin Add(′Name′ ftString False); Add(′Value′ ftInteger False); end;

with DataSource do begin DataSet:=CreateTableInMemory(ADataSet FieldDefs); DataSet Open; end;

ADataSet Free;end;

临时表创建完成

方法 使用简单 但由于利用查询控件 清空数据时需要查询服务器后台数据库 所以速度稍慢 而且不适用于临时表中各个字段由数个数据表的字段拼凑而成的情况 方法 适用范围广 速度快 但需要编写代码 (代码中TFieldDefs的使用方法十分简单 见Delphi的联机帮助)

二 配置数据引擎(BDE SQL Link) 有关数据库程序分发时 需要携带数据引擎(BDE SQL Link) 并且在客户端安装完程序后还需要配置数据引擎 如用户名(username) 密码(Password)等等 如果手工配置的话 工作量比较大(根据客户机数量而定) 而InstallShield For Delphi又好像没有这方面的选项 其实InstallShield For Delphi可以做到 在生成安装程序的目录里有一个* iwz的文本文件 只要在[IDAPI Alias]片段中手工加入即可 例如 [IDAPI Alias] usesname=SYSDBA password=masterkey 安装程序后数据引擎自动配置完毕

三 在InterBase数据库中使用函数 程序员可能在用InterBase作为后台数据库时 会为其提供的函数过少而感到不方便(只有四个) 无法方便地编写出复杂的存储过程 InterBase本身无法编写函数 但它可以使用外部函数(调用DLL中的函数) 下例中说明如何在InterBase 中声明SUBSTR函数 DECLARE EXTERNAL FUNCTION SUBSTR CSTRING( ) SMALLINT SMALLINT RETURNS CSTRING( ) ENTRY_POINT ″IB_UDF_substr″ MODULE_NAME ″ib_udf″

其中 MODULE_NAME为DLL的名称 ENTRY_POINT为函数名 声明后便可以使用 例如 select SUBSTR(country) from country

lishixin/Article/program/Delphi/201311/8520

H. 利用Delphi开发网络数据库应用

Delphi 是具可视化界面的面向对象编程语言 它以其功能强大 简便易用等诸多特性 深受编程人员的欢迎 Delphi 中提供了数据库引擎 BDE(Borland Database Engine) 并内含众多的数据库调用构件 为编程人员开发客户/服务器应用程序提供了方便 通常情况下 利用 Delphi 开发数据库应用程序 可以使用TTable TDataSource TDBEdit TDBNavigator等构件 只要正确设置了构件的某些属性 再编写必要的程序代码对一些特定事件进行处理 就能够完成对多种数据库进行的数据处理 例如 记录的输入 修改 删除和查询等 这样做虽然只需要编写极少量的程序代码就能达到很好的效果 但如果在程序设计过程中 某些数据表的结构发生了改变 则必须修改与此数据表有关的所有构件的属性 这将使程序员陷入繁琐的重复劳动中

为避免上述的麻烦 我们可以在编写网络数据库应用程序时采用结构化查询语言 SQL(Structured Query Language) 这样不仅可以更方便地与诸如 SQL Server Oracle 等各种后台数据库进行动态的数据交换 而且可以使程序的修改和移植更加灵活 我们以数据输入模块为例 说明开发客户/服务器应用程序时如何采用 SQL 语句实现数据处理功能 首先 判断是否已经有事务处理程序在运行 如果有 将其回卷(rollback) 如果没有 则启动一个新的事务 为数据的最终处理做准备 其次 是设置 SQL 语句 并将其写入 TQuery 构件中 最后 将事务提交或回卷 至此完成一条记录的数据输入

下面是以页面中的 TEdit 类型编辑框内容作为数据源 向数据库输入记录的过程代码

procere DataInsert(const qName:TQuery; szDBName:string;iNum:Integer; iMark:array of Integer;eName:array of TEdit); var i : Integer; szSQL : string; begin if DataMole DataBase InTransaction=true then DataMole DataBase RollBack; DataMole DataBase StartTransaction; szSQL := INSERT INTO +szDBName+ VALUES( for i:= to iNum do begin if iMark[i]= then szSQL := szSQL+eName[i] Text {非字符方式} else szSQL := szSQL+ +eName[i] Text+ ; {字符方式} if i=iNum then szSQL := szSQL+ ) else szSQL := szSQL+ ; end; qName Close; {关闭查询} qName SQL Clear; {清SQL特性内容} qName SQL ADD(szSQL); {添加SQL内容} szSQL := SELECT * FROM +szDBName; qName SQL ADD(szSQL); qName Open; {返回结果集} DataMole DataBase Commit; end; 以上过程包含五个参数 实现从页面中的一系列编辑框中读取数据 并向指定数据表输入的功能 其中 参数 qName 为页面中所使用的 TQuery 类构件的名称 参数 szDBName 是数据表的名称 参数eName 是 TEdit 类型的数组 列出了页面中包含数据的各编辑框名称 参数 iNum 是数据表中的字段个数 也即编辑框的个数 参数 iMark 是一个整数类型的数组 该参数表明相应字段是以何种方式输入的 如果是字符方式 需要在数据前后两端加上引号 需要注意的是 在调用本过程之前 应将数据库连接打开

DataMole DataBase Connected := true;

过程调用完成后 将数据库连接断开 DataMole DataBase Connected := false; 另外 开发网络数据库应用程序时 还可以使用存储过程 即 将预先编译过的 SQL 语句存储在服务器上 存储过程提前运行 且不与程序代码一同存储和编译 因此其对应主程序中的代码相对简洁 运行速度也较快 SQL 语句的集中存放 使其修改更容易

要创建向数据表中输入数据的存储过程 代码编写举例如下

CREATE PROC ProcTest @inttest *** allint @strtest char( ) output AS INSERT INTO TEST_User TRANS_TEST VALUES(@inttest @strtest) SELECT @strtest * FROM TEST_User TRANS_TEST 以上代码向数据表 TEST_User TRANS_TEST 添加数据 该数据表包括两个字段 第一个字段为 *** allint 类型的数据 参数类型定为 Input(在存储过程中可缺省) 第二个字段数据为长度为 的字符类型 参数类型为 Output

其模块程序的编写与 DataInsert 过程相似 区别主要在于模块的中间部分 对应的主要代码如下

StoredProc Close; {关闭存储过程} StoredProc Params[ ] ParamType := ptInput; {设置存储过程的参数类型} StoredProc Params[ ] AsInteger := ; {设置存储过程中参数的数据} StoredProc Params[ ] ParamType := ptOutput; StoredProc Params[ ] AsString := abcd ; StoredProc Open; {打开存储过程} 其中 StoredProc 是 TStoredProc 类型的构件名称 Params[ ] 是存储过程中的第一个参数 对应存储过程 ProcTest 可以用ParamByName( @inttest )代替 存储过程的第二个参数与其类似

lishixin/Article/program/Delphi/201311/25067

I. 用delphi动态创建数据库

用adoquery这个控件
先连接好数据库
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('create table 表名( 学号 char(20),姓名 char(20),班级 char(20))');
adoquery1.execsql;
可以了.

J. Delphi 如何创建mdb数据库文件以及增加表段和删除表段!

使用SQl语句就可以了.
创建数据库:
Create
Database
......
后面是用户名,用户密码,数据文件名,数据文件大小,增加率等内容
创建表:
Create
Table
...后面是表名,数据结构等内容
增加表字段:
Alter
Table
表名
Add
字段名
字段数据类型
删除表字段:
Alter
Table
表名
Drop
字段名...