• FireDAC 下的 Sqlite [6]


    主要就是设置 TFDConnection 的两个链接参数: Password, NewPassword, 非常简单.


    const
      dbPath = 'C:TempSQLiteTest.sdb';
    
    {建立加密数据库, 密码是 mm123}
    procedure TForm1.FormCreate(Sender: TObject);
    const
      strTable = 'CREATE TABLE MyTable(Id integer, Name string(10), Age byte)'; //Id, Name, Age 三个字段
    begin
      if FileExists(dbPath) then DeleteFile(dbPath);
    
      FDConnection1.Params.Add('DriverID=SQLite');
      FDConnection1.Params.Add('Database=' + dbPath);
      FDConnection1.Params.Add('Password=mm123'); //相同与 Password=aes-256:mm123; aes-256 是默认的加密算法;
                                                  //还有: aes-128,aes-192,aes-256, aes-ctr-128,aes-ctr-192,aes-ctr-256, aes-ecb-128,aes-ecb-192,aes-ecb-256
      //建表并输入测试数据
      FDConnection1.ExecSQL(strTable);
      FDConnection1.ExecSQL('INSERT INTO MyTable(Id, Name, Age) VALUES(:1, :2, :3)', [1, 'abc', 23]);
    end;
    
    {打开有密码的数据库}
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      FDConnection1.Params.Clear;
      FDConnection1.Connected := False;
    
      FDConnection1.Params.Add('DriverID=SQLite');
      FDConnection1.Params.Add('Database=' + dbPath);
      FDConnection1.Params.Add('Password=mm123');
      FDConnection1.Connected := True;
      FDQuery1.Open('SELECT * FROM MyTable');
    end;
    
    {修改密码}
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      FDConnection1.Params.Clear;
      FDConnection1.Connected := False;
    
      FDConnection1.Params.Add('DriverID=SQLite');
      FDConnection1.Params.Add('Database=' + dbPath);
      FDConnection1.Params.Add('Password=mm123');
      FDConnection1.Params.Add('NewPassword=mm12345'); //新密码, 密码为空表示取消密码
      FDConnection1.Connected := True;
      FDConnection1.Connected := False;
    end;
    


    FireDAC 还提供了一个专用的加密控件 TFDSQLiteSecurity, 因为上面的方法足够方便了, 所以用处不大.


    FDSQLiteSecurity1.DriverLink := FDPhysSQLiteDriverLink1;  //TFDSQLiteSecurity 和 FireDAC.Phys.SQLite 里的其他四个控件, 使用前都要先指定这个属性
    FDSQLiteSecurity1.Database := dbPath;    //指定数据库路径
    FDSQLiteSecurity1.Password := 'mm111'//密码
    FDSQLiteSecurity1.ToPassword := 'mm222'; //新密码
    FDSQLiteSecurity1.SetPassword;           //设置密码
    FDSQLiteSecurity1.ChangePassword;        //修改密码
    FDSQLiteSecurity1.RemovePassword;        //移除密码
    


    帮助里面说: 通过 FireDAC 加密的 SQLite 与其它并不兼容.

  • 相关阅读:
    Raid卡在Write back 与Write through 时的性能差异
    mysql 的outfile以及infile 语法简单备份恢复表
    @SneakyThrows
    java中的mmap实现--转
    以ATT&CK为例构建网络安全知识图
    横向移动攻击点与识别
    Tomcat开启JMX监控
    mysql serverTimezone
    自增还是UUID?数据库主键的类型选择,为啥不能用uuid做MySQL的主键?
    数据库:查询结果中增加数据库不存在的字段的方法
  • 原文地址:https://www.cnblogs.com/yjhb/p/11804229.html
Copyright © 2020-2023  润新知