如何利用Txt文件进行数据库操作(高深问题)(200分)

  • 主题发起人 主题发起人 CashChin
  • 开始时间 开始时间
C

CashChin

Unregistered / Unconfirmed
GUEST, unregistred user!
用一个文本文件和一个Table控件能否进行数据库操作,请各们帮忙,另外,文本文件有什么
要求吗?例如以什么为分隔符等。
 

文本文件要有格式或分割符
以不出现的数据为分割符
 
一般用 |
代码可能要自己写
 
文本要先逐行读入并保存到数据表中,再用table连接数据表来操作。文本文件可用的分隔
符可以自己决定,如空格、逗号、分号,以数据中未出现为准。
打开并操作文本文件的代码如下:
var
f:textfile;
S:string;
begin
assignFile(f,'foo.txt');
Reset(f);
While not eof(f) do
Readln(f,S);
closefile(f);
end;
 
这种数据库包含两个文件 一个是数据文件(TXT)一个是计划文件(SCHEMA)扩展名为SCH
两个文件文件名必须相同
数据文件的长度应该是固定的或者是分界符分开
计划文件提供字段长度名称什么的
把TABLE特性设为一个包含数据文件(TXT)和计划文件(SCH)的别名或目录,再把TABLETYPE特性设为TTASCII
然后再把TABLENAME的特性指定你要的文本数据库表

文本文件的每一行只包含一个纪录
文本数据库只能在程序代码中打开 不能在设计期打开
 
能否给出代码
 
用类型文件岂不更好
 
如何建立计划文件 
 
类型文件复合查询很难
 
因为不想用数据表保存,把文本文件读入数据表的时间太长
 
采有BDE可以和使用数据库表一样的使用txt文件,将table控件的tabletype属性改ttASCII就可以了
 
如果这么简单的设就能用,我还出这么高分吗?
 
计划文件大概格式

[AAA]
[FILETYPE]=FIXED
CHARSET=ascii
Field1=Name,CHAR,15,00,05
Field2=Number,NUMBER,05,00,00

说明
FieldX=Field Name,Field Type,Size,Decimal Places,Offset
X为字段编号
FIELDNAME为字段名称 不可以有引号或字符串分隔符
Field Type字段类型
Size字段长度 =〈20
Decimal Places 指定小数点位置
Offset 字段开始位置
 
在vb里可好实现
 
MS 有个ASCII引擎,文件有遵循一定的格式
看见吧,没用过,自己找资料吧。
 
晕,这样的问题还说是“高深问题”,
我都不宵回答---只要动一下脑子,不懒的话,一会就
想出来了。。
 
AssignFile(id,SaveDialog.FileName+'.txt');
ReWrite(id);
if RadioButton1.Checked then Tab:=#9;
if RadioButton2.Checked then Tab:=';';
if RadioButton3.Checked then Tab:=',';
if RadioButton4.Checked then Tab:='|';
with strGrid do
begin
for i:=0 to RowCount-1 do
for x := 0 to ColCount-1 do
S := S + Cells[x,i]+ Tab;
Write(id,S+#10);
end;
CloseFile(id);
 
我提供全部数据库文件(可变长度的) 放分吧 保证可以用 不需要写代码
数据库具体设置我前面说过了

在同一个目录下 (例如c:/temp)建立两个文件 111.txt 和111.sch
111.txt的内容如下(最后一个纪录输入完毕后需要回车 否则报错)

AAA,00001,M
BBB,00002,M
CCC,00003,F


111.sch的内容如下(小节中的名字必须和文件名相同)

[111]
FILETYPE = VARYING
CHARSET = ascii
DELIMITER = ''
SEPARATOR = ,
Field1 = Name,CHAR,15,00,00
Field2 = Number,NUMBER,05,00,00
Field3 = Sex,CHAR,02,00,00

然后程序中把TABLE特性
DATABASENAME='c:/temp'
TABLENAME='111' 就可以了
由于其文本数据库以独占方式打开 在设计阶段打开数据库 则运行报错
程序中再用代码打开吧~~~~~~~~~~~~~~~~~

结束放分把~~~~~
 
后退
顶部