delphi创建数据库
1. delphi ADOTable 能创建数据库ACCESS里的一张新的数据表吗
用Tbutton、Tadoquery 和 TADOConnection 控件创建 access 数据库表数据库文件在 c:\mydb.mdb 在程序中添加AccessXP,ComObj 单元添加Tbutton、Tadoquery 和 TADOConnection 控件 名称分别为button1、adoquery1 和 ADOConnection1 button1 的click 事件程序如下:procere TForm1.Button1Click(Sender: TObject);
var AccessDB:OleVariant;
begin
try
AccessDB:=CreateOleObject('ADOX.Catalog');
AccessDB.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\mydb.mdb');
finally
AccessDB:=VarNull;
end;
adoconnection1.ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydb.mdb;Persist Security Info=False';
with adoquery1 do
begin
close;
sql.Clear;
sql.add('Create Table Tab1 (id counter,name string,pass string)');
execsql;
end;
end;
2. 用delphi动态创建数据库
用adoquery这个控件
先连接好数据库
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('create table 表名( 学号 char(20),姓名 char(20),班级 char(20))');
adoquery1.execsql;
可以了.
3. 关于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版上调试运行
通过。
4. DELPHI基础教程:Delphi开发数据库应用程序概述(一)[3]
Visual Query Builder 以可视化的方式建立SQL语句对数据库表和表中的记录进行操作
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SQL links使得Delphi数据库应用程序利用SQL语言访问驻留在远程服务器上的数据 这些服务器包括ORACLE Sybase Microsoft SQL Server Informix InterBase 当安装SQL Link驱动程序之后 SQL语句便可以直接操作服务器上的数据
Delphi可以访问的数据源(DataSource)
Delphi数据库应用程序是通过BDE获取它们所需的数据的 BDE与不同类型的数据源打交道 BDE可以使用的数据源有如表 所示
表 Delphi可访问的数据源
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
数据源(DataSource) 特 性 描 述 文件扩展名
───────────────────────────毕含──────────
dBASE数据库 数据库表是通过dBASE数据库管理系统或DBD建立的 每察拦个表是一个独立的文件 DBF
─────────────────────────────────────
Paradox数据库 数据库表是通过Paradox数据库管理系统 DB或DBD建立的 每个表是一个独立的文件
─────────────────────────────────────
ASCII文件 表是通过Database Desktop建立的 每个 TXT表是一个独立的文件
─────────────────────────────────────
本地InterBase服务器 数据库是通过InterBase数据库管理系统 GDB建立的 多个表包含在一个数据库文件中
────────────败数胡─────────────────────────
SQL数据库服务器 数据库是通过相应的数据库服务器提供的 依赖不同的ORACLE Sybase Informix 专用或通用工具建立的 也可以通过DBD来 数据库管理Microsoft SQL Server 创建数据库 并通过SQL Link访问数据库 系统InterBase
─────────────────────────────────────
ODBC数据源 主要是指那些具有ODBC接口的数据库系统 依赖于相应如MS Access Btrieve等的数据库
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Delphi数据库的体系结构
Delphi使用可视化的部件创建数据库应用 跟创建其它的非数据库应用程序一样 数据库部件都具备一定的属性 程序设计人员可以在设计过程中设置部件的多种属性 也可以在程序运行过程中通过程序来设置部件的各种属性
在Delphi部件板上有两页数据库部件用于开发数据库应用程序
数据访问部件页 该页上的部件主要用于说明有关的数据库的信息 如应用程序要访问(连接)的数据库 要访问数据库中的具体的数据库表 以及要访问表中哪些字段等 在实际的开发应用中常用的部件有TDataSource TTable TQuery等
数据控制部件页 该页上的部件主要用于显示浏览数据库中的数据信息 为用户提供了一个可视化的界面 常用的部件有 TDBGrid TDBEdit TDBCheck等 可以让用户对数据库中的信息进行有效的浏览 编辑 插入 删除等操作
TTable TQuery TStoredproc部件负责与实际的数据库表联系 并从中获取数据信息 因而它们又常常被称为数据集部件 它们在程序设计过程中是可见的 但在程序运行时是不可见的 它们通过 BDE 为应用程序提供与数据库的连接 数据控制部件通过TDataSource部件与数据集部件相连 为用户提供一个可视化的界面 并在其中显示数据库中的数据信息
数据访问部件
数据访问部件页上提供了一组数据访问部件用来访问数据库中的数据
当要创建一个数据库应用时 首先在窗体中选择一个数据访问部件 然后为数据访问部件设置有关的属性 说明要访问的数据库 数据表以及表中的记录等 数据访问部件为数据控制部件与数据源建立一条通道 数据访问部件在程序运行时是不可见的 下表列出了数据访问页上的数据访问部件以及它们的主要用途
表 数据访问部件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件名称 主 要 用 途
────────────────────────────
作为数据集部件TTable TQuery StoredProc组TDataSource 件与数据浏览件TDBGrid TDBEdit之间传送数据的通道
────────────────────────────
TTable 它是存取磁盘上数据库表的媒介 它通过BDE存取数据库表中的数据 TTable再与TDataSource进行 对话 使得数据浏览部件能够有效地从TTable中访问数据并能显示和编辑其中的数据
────────────────────────────
TQuery 它利用SQL语言访问磁盘上数据库表中的数据 并与TDataSource 对话 实现数据浏览部件对数据库的访问
────────────────────────────
TStoredProc 在应用程序中 它主要用来访问远程服务器中的存贮过程
────────────────────────────
TDatabase 当应用程序要登录到一个远程服务器上的数据库时 可以用该部件来建立应用程序与数据库永久
性的连接
────────────────────────────
TBatchMove 用于复制数据库表的结构或表中的记录
────────────────────────────
TReport 用于创建数据库的输出报表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
lishixin/Article/program/Delphi/201311/25180
5. 在Delphi中如何动态创建dbf数据库
以下是一个示例。供参考。(它是由dBASEvierer自动生成的单元)
unit1;
{***********************************************************************}
{}
{含喊粗基ormoretablesinthe}
{folder"aDbase"specifiedasaparameter.Ifthetablesare}
{successfullycreatedandopened,Trueisreturned."AOwner"isa}
{.}
{}
{}
{copiedintocodeofthewriter'schoice.}
{}
{CodegeneratedbydBASEviewer,writtenbyDouglasP.Baird-}
{dprd@sprynet..}
{}
{***********************************************************************}
interface
usesclasses;
functionCreateTables(aDbase:string;AOwner:TComponent):Boolean;
implementation
usesdbtables,SysUtils,db,Dialogs;
functionCreateTables(aDbase:string;AOwner:TComponent):Boolean;
var
Table0:TTable;
begin
Table0:=TTable.Create(AOwner);
{Create1.DBF}
withTable0dobegin
try
DatabaseName:=aDbase;
TableName:='1.DBF';
TableType:=ttDBase;
TableLevel:=7;
withFieldDefsdobegin
Clear;
withAddFieldDefdobegin
Name:='自动';
DataType:=ftAutoInc;
end;
withAddFieldDefdobegin
Name:='日期';
DataType:=ftDateTime;
end;
withAddFieldDefdobegin
Name:='分类';
DataType:=ftString;
Size:=16;
end;
withAddFieldDefdobegin
Name:='知识主题';
DataType:=ftString;
Size:=60;
end;
withAddFieldDefdobegin
Name:='索引关键字';
DataType:=ftString;
Size:=20;
end;
withAddFieldDefdobegin
Name:='知识内容';
DataType:=ftMemo;
end;
withAddFieldDefdobegin
Name:='提交';
DataType:=ftBoolean;
end;
withAddFieldDefdobegin
Name:='blob';
DataType:=ftTypedBinary;
谈凳野end;
withAddFieldDefdobegin
Name:='ext';
DataType:=ftString;
Size:=5;
end;
end;
{odwith}
IndexDefs.Clear;
withIndexDefs.AddIndexDefdobegin
Name:='分类';
Fields:='分类';
Options:=[];
end;
{odwith}
withIndexDefs.AddIndexDefdobegin
Name:='日期';
Fields:='日期';
Options:=[];
end;
{odwith}
except
onE:Exceptiondobegin
MessageDlg(E.Message,mtError,[mbOk],0);
Result:=False;
Exit;
end;
{odon}
end;{try}
Result:=True;
try
CreateTable;
except
onE:Exceptiondobegin
MessageDlg('Errorcreatingtable.'+E.Message,mtError,[mbOk],0);
Result:=False;
end;
{odon}
end;{try}
end;
{odwithTable0}
Table0.Free;
end;
end.