哪种数据库能直接使用而不需要向系统中安装别的东西,比如:引擎。(50分)

  • 主题发起人 主题发起人 chemstar
  • 开始时间 开始时间
自己编写一个纯文本格式的DataSet类(TDataSet继承),
从DELPHI 3.0开始,TDataSet与DBE无关.
 
to 大家:
  是不是pd格式的也不需要另外安装引擎呀?
  另个pd格式的库能利用代码在程序中动态建立吗?
 
paradox可以啊 !
 
Windows下最方便的单机数据库:ACCESS
WIN98第二版以上操作系统,不用装驱动
早期版本,装MDAC2.1以上版本
发布只要一EXE加一MDB文件,WINRAR搞定安装程序:)

const
SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
+'Jet OLEDB:Database Password=%s;';

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;

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;

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;
 
to ysai:
你这儿建立的数据库好像没有说怎样建立一个表啊?比如说建立一个名称为aaa,字段有:
ID,name的表怎么办?
 给出代码后,立即给分。
 
to ysai:
  我用Access 2000建了一个数据库,但怎么访问它呀?用Ttable怎么不行呀?
 
来自OFFICE XP之ACCESS参考-ACMAIN10.CHM
JET SQL参考:

CREATE TABLE 语句
创建新表。
--------------------------------------------------------------------------------
注意:对于非微软数据库, Microsoft Jet数据库引擎不支持 CREATE TABLE 或 DDL语句的
使用。而使用 DAO创建方法。
--------------------------------------------------------------------------------
语法
CREATE [TEMPORARY] TABLE表 (字段1类型 [(字长)] [NOT NULL] [WITH COMPRESSION |
WITH COMP] [索引1] [, 字段2类型 [(字长)] [NOT NULL] [索引2] [, ...]][, CONSTRAINT
multifieldindex [, ...]])

CREATE TABLE 语句分为以下几个部分:

部分 说明
table 欲创建的表的名称。
field1, field2 在新表中欲创建的字段的名称。至少必须创建一个字段。
type 在新表中的字段的数据类型。
size 字段的字符长度 (文本及二进制字段)。
index1, index2 子句定义多重字段索引的 CONSTRAINT 。欲了解有关如何建立此索引的更多
信息,请看 CONSTRAINT 子句.
multifieldindex 子句定义多重字段索引的 CONSTRAINT 。欲了解有关如何建立此索引的更
多信息,请看 CONSTRAINT 子句.

说明
使用 CREATE TABLE 语句来定义新表及它的字段以及字段条件。如果将一字段指定为 NOT
NULL,则新记录的该字段值必须是有效的数据。
CONSTRAINT 子句在字段上可创建不同的限制,并可用来建立主键。可以使用 CREATE
INDEX 语句在当前表上建立一个主键或附加索引。
可以在单一字段上使用 NOT NULL,或在用于单一字段或多重字段(名为 CONSTRAINT) 的
CONSTRAINT 子句中使用 NOT NULL。但是,一个字段只能使用一次 NOT NULL 限制。尝试
多次应用此限制将导致运行错误。
建立 TEMPORARY 表时, 只能在建表的会话期间看见它。会话期终止时它就被自动删除。
Temporary表能被不止一个用户访问。
WITH COMPRESSION 属性只能和 CHARACTER及 MEMO (也被称作 TEXT) 数据类型和它们
的同义字一起使用。
WITH COMPRESSION 属性被加入 CHARACTER列是因为单码字符表示格式的变化。Unicode
字符一律需要两个字节。对于现有的主要包含字符数据的 Microsoft Jet数据库,这可能
意味着数据库文件被转换成 Microsoft Jet 4.0格式时字长会增加将近一倍。然而,从前
由单字节字符群(SBCS)指示的众多字符群的Unicode 表示可以很容易地被压缩成一个单字
节。 如果你用这一属性定义一个 CHARACTER 列,数据被储存时会自动压缩,从列中恢复
时会自动解压缩。
MEMO 列也能被定义用来把数据存储成压缩格式。然而有个局限。只有在压缩时能达到最多
4096字节的事例才可被压缩。 所有其他事例则不会被压缩。这就是说,在一个给定的表
中,一个给定的MEMO列中有的数据会被压缩,有的则不会。


CREATE TABLE 语句,CONSTRAINT 子句示例(VB代码)

此示例使用两个文本字段来创建一个名为“ThisTable”的添加表。
Sub CreateTableX1()
Dim dbs As Database
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")
' 对运费超过 $100 的订单,
' 使用两个文本字段来创建表。
dbs.Execute "CREATE TABLE ThisTable " _
& "(FirstName TEXT, LastName TEXT);"
dbs.Close
End Sub

此示例使用两个文本字段、日期/时间字段、及唯一索引来创建名为“MyTable”的添加表 。
Sub CreateTableX2()
Dim dbs As Database
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")
' 对运费超过 $100 的订单,
' 创建使用三字段的表和唯一的
' 索引组成这所有的三个字段。
dbs.Execute "CREATE TABLE MyTable " _
& "(FirstName TEXT, LastName TEXT, " _
& "DateOfBirth DATETIME, " _
& "CONSTRAINT MyTableConstraint UNIQUE " _
& "(FirstName, LastName, DateOfBirth));"
dbs.Close
End Sub

此示例使用两个文本字段和一个整型字段来创建新的表。SSN 字段是主键。
Sub CreateTableX3()
Dim dbs As Database
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")
' 对运费超过 $100 的订单,
' 创建使用三字段的表和唯一的
' 键.
dbs.Execute "CREATE TABLE NewTable " _
& "(FirstName TEXT, LastName TEXT, " _
& "SSN INTEGER CONSTRAINT MyFieldConstraint " _
& "PRIMARY KEY);"
dbs.Close
End Sub

建议楼主看看SQL方面的东东
 
to to ysai:
非常感谢!已经基本上明白了,但是还有一点小问题:我用Access 2000建了一个数据库,
但在D6或者D7里面不能访问它呀?用Ttable怎么不行呀?
 我记得D5里面的Ttable是在Data Access这一页里,但是在D6和D7里面怎么跑到BDE这一
页里了?是一回事吗?怎么不能用?
 
SORRY,我从不用BDE,只用ADO的
ADO连接ACCESS数据库很方便,如果可以的话请试试,
BDE我就帮不上忙了
 
access2000数据库用ADO组件面板上的控件来控制,TTable当然不行了
你应该用ADOTable
ADOConnection
ADOQuery

 
to skymean :
我想使用跟我的程序在同一目录下的aaa.mdb库,ADOTable ,ADOConnection,ADOQuery
这三个控件的属性怎么设置呀?
  另外如果用代码动态设置怎么办?
 
dbisam
tinydb
easytable
flishfilter
 
终于明白了。谢谢大家关心!阿菜我有礼了!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
730
SUNSTONE的Delphi笔记
S
后退
顶部