创建表时如何设置密码?(100分)

  • 主题发起人 主题发起人 wzisme
  • 开始时间 开始时间
W

wzisme

Unregistered / Unconfirmed
GUEST, unregistred user!
创建表时如何设置密码?
数据库为paradox时
用ttable创建表时,如何设置密码?
table1.createtable;
 
可以采用压缩包的方式.
 
paradox通用密码是:jIGGAe
设了也没有用
 
数据库PARADOX不能设置密码,所以要有密码的话,先把他压缩,加密码。
 
调用下面这个过程:
procedure EncryptPDOXTable(TableName,Password : String);
var
TblDesc: CRTblDesc;
LocDB : TDatabase;
begin
Check(DBIInit(nil));
Randomize;
LocDB := TDatabase.Create(nil);
with LocDB do begin
Params.Add('path=' + ExtractFilePath(TableName));
DatabaseName := 'PDOXEncryptDB' + IntToStr(Random(50));
DriverName := 'STANDARD';
Connected := True;
end;
FillChar(TblDesc, SizeOf(CRTblDesc), 0);
StrPCopy(TblDesc.szTblName, ExtractFileName(TableName));
with TblDesc do begin
bProtected := True;
StrPCopy(TblDesc.szPassword, Password);
end;
try
Check(DbiDoRestructure(LocDB.Handle, 1, @TblDesc,
nil, nil, nil, False));
finally
LocDB.Free;
DBIExit;
end;
end;
 
Paradox的密码比Access的好不了多少,网上有一大堆工具可以找出其密码。
如果是关键数据可以采用数据加密码的方式
如果是为了防止其他开发人员得到你的表结构,那可能没什么好办法。
 
下面给出的函数 AddMasterPassword 完成添加PARADOX表
主口令的工作
AddMasterPassword(Table1, 'MyNewPassword')

procedure AddMasterPassword(Table: TTable;pswd: string);
const
RESTRUCTURE_TRUE=WordBool(1);

var
TblDesc: CRTblDesc;
hDb: hDBIDb;

begin
{表打开?表是独占吗?}
if (Table.Active=False) or (Table.Exclusive=False) then
raise EDatabaseError.Create('数据表必须在独占方式才可以添加口令');

{初始化表描述区}
FillChar(TblDesc, SizeOf(CRTblDesc), 0);

with TblDesc do
begin
{把表名放到描述区}
StrPCopy(szTblName, Table.TableName);
{把表类型放到描述区}
StrCopy(szTblType, szPARADOX);

StrPCopy(szPassword, pswd);

{设置BPROTECTED为TRUE}
bProtected :=RESTRUCTURE_TRUE;
end;

{从当前的HANDLE里得到DATABASE的HANDLE}
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
{关闭表}
Table.Close;
{添加主口令到PARADOX表里}
Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, FALSE));
{添加一个新口令到SESSION}
Session.AddPassword(pswd);
{重新打开表}
Table.Open;
end;
 
多人接受答案了。
 
后退
顶部