如何编写无界面显示,却与数据库挂钩的DLL?(100分)

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

cdd

Unregistered / Unconfirmed
GUEST, unregistred user!
我想编写一个往某数据库里添加记录的DLL,前提是无需界面显示。想到用CREATETABLE
指令创建一个TTABLE的实例,却是创建一个新表,自是不行!望各位大侠指点一二,小女子在这谢谢大家了!
 
1、首先要说的是,*.Dll主要被多个子例程调用的一个公共模块功能。所以说,你
若仅为了添加记录就设个*.Dll我看没必要,一则,你的数据库不仅仅是用来添加
记录的吧;二则,为这不定何时能够使用的模块建个*.Dll,太不值得,况且*.Dll
是要驻留内存的,稍处理不当就有可能Reset(ShutDown).
2、由于*.dll为公用模块,当然每个调用对该数据库的结构来说都是不可见的,因而
写入的记录各字段难免有类型等不匹配的地方,这是出错的根源。
以上两点望三思!?
 
写无界面的dll可以利用Delphi的程序向导创建一个dll project, 然后你可以加上
一个TDataModule, 在里面处理任何数据库问题, TDataModule在运行时是不可件的.
 
其实只要将form的属性设为不可见,其他的可按正常设计
 
用SQL语言不是能很好地实现这一切吗?
为什么要做到DLL中去?
 
是啊,最好是用tquery去调sql,如果一定要做dll,那么用tdatamodal
 
建立TTable 的 实例应该用 TTable.Create的方法,
TTable的CreateTable是根据FieldDef建立一个表。
 
dll中动态建立TTable有两种方法:
1. 调用dll时把调用者的form当作一个参数传递给dll. 例如:
procedure CallMyDll(OwnerForm: TForm);
stdcall;
export;
....
DllTable := TTable.Create(OwnerForm);
.....
..... // 设置table各项属性
DllTable.Open;
.... // 进行处理
2. 用nil当TTable的owner:
DllDataBase := TDataBase.Create(nil);
DllDataBase.DataBaseName := 'DB'+inttostr(random(9999));
// 不重复的名字
...... // 设置Database各项属性, AliasName, LoginPrompt, Params,....
DllSession := TSession.Create(nil);
DllSession.SessionName := 'SESSION'+Inttostr(Random(9999));
DllTable := TTable.Create(nil);
DllTable.SessionName := DllSession.SessionName;
DllTable.DataBaseName := DllDataBase.DataBaseName;
........ // 设置Table的属性, 比如TableName
DllTable.Open;
..... // 进行处理
最后别忘记释放.
上述方法使用起来没有问题
 
datamodule is the best and easiest way:)
 
多人接受答案了。
 

Similar threads

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