在程序中,为了防止mdb数据库被误删,我将数据库编译到res资源文件中去了,作成了mymdb.res,并添加到单元,但不知如何调用?
解决方案 »
- dxDBGrid 如何录入数据
- TIISNamespace 和 IISole_tlb.dcu从哪能找到(急在线等待)
- 小问题:如何让TEdit控件只接收数字输入。
- 在程序中用sql语句在access中增加字段问题!!!!,在线等待
- 我用了一条这样的语句 j:=table1.recordcount; 为什么j得不到值????
- 三层应用的最初级问题!
- inherited的问题。
- 我是delphi的初学者,有问题,急救!
- 如何控制DBGRID和EDIT之间的输入法 ?
- 大下!DELPHI中取子串的函数叫(象VB的MID())? 及判断数据类型的函数名叫?
- delphi7游戏呼出外挂窗口
- Delphi的treeview应用中出错,单击子节点打开另一个窗口 ,怎么让子节点失去焦点
mydb dbfile 'my.mdb'2.读取
var
Res: TResourceStream;
begin
Res := TResourceStream.Create(Hinstance,'mydb', Pchar('dbfile'));
Res.SavetoFile('c:\tmp.mdb');//释放到新的空间
end;
function ExtractRes(pFilePath,pFileName,pFileExteName: string): Boolean;
var
vFileName: string;
Res: TResourceStream;
begin
vFileName := pFilePath + pFileName + '.' + pFileExteName;
if FileExists(vFileName) then
begin
Result := True;
Exit;
end;
ForceDirectories(pFilePath);
try
Res := TResourceStream.Create(Hinstance, pFileName+'DB', PChar(pFileExteName));
try
Res.SavetoFile(vFileName);
Result := True;
finally
Res.Free;
end;
except
Result := False;
end;
end;//在数据单元创建时调用
procedure TDM.DataModuleCreate(Sender: TObject);
var
AppPath,CPass,CName,Conn1:string;
ConfigStr,SystemDataBaseName:string;
ini: TIniFile;
m:Integer;
vDBName: string;
begin
gApplTerm := False;
GetDir(0,AppPath);
vDBName := AppPath + '\DataBase\Language.mdb';
if not ExtractRes(AppPath + '\DataBase\','Language','mdb') then//释放数据库
begin
Application.MessageBox('数据库丢失,系统无法运行!','系统提示',MB_ok);
gApplTerm := True;
Exit;
end;end;
资源编译好之后是只读的。你的程序也不能做到使用的时候释放出来,使用完又编译回去所以为了防止mdb数据库被误删,把mdb编译到资源中我个人觉得是没有意义的。为了部署方便还可以说得过去。
同意2位说的,发现MDB被删除后,就从资源里拷一个出来,
但是这样被删除的数据库以前的纪录也都没了
Res: TResourceStream;
begin
if FileExists('c:\tmp.mdb') then exit;
Res := TResourceStream.Create(Hinstance,'mydb', Pchar('dbfile'));
Res.SavetoFile('c:\tmp.mdb');//释放到新的空间
end;这样写,防止覆盖掉已经更新的记录。
try
Res := TResourceStream.Create(Hinstance,PChar(ResType), PChar(ResName));
try
Res.SavetoFile(Filename);
Result := True;
finally
Res.Free;
end;
uses resutils;
{$R *.dfm}
{$R mymdb.RES}procedure TForm1.Button1Click(Sender: TObject);
var Res: TResourceStream;
begin
Res := TResourceStream.Create(Hinstance,pchar('RCDATA'), Pchar('mymdb.res'));
Res.SavetoFile('c:\new.mdb');
end;错误信息
message"Resource RCDATA not found"说明:
附资源文件mymdb.rc:
mymdb RCDATA dqb.mdb编译的资源文件为mymdb.res。