• 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 与其它并不兼容.

  • 相关阅读:
    preventDefault()、stopPropagation()、return false 之间的区别
    angular $q服务的用法
    Introduction
    软件工程第一次作业
    整除光棍(天梯)
    遍历数据文件目录music中的所有歌单,提取歌曲名称以及对应的标签,并进行统计。统计各个标签的歌曲数目,并在每个标签下找出出现次数最多的3首歌曲,写入到excel表格中:
    Python中字符串的format
    Kafka设计原理总结
    Dubbo源码分析
    浅谈HTTPS传输过程
  • 原文地址:https://www.cnblogs.com/del/p/3744017.html
Copyright © 2020-2023  润新知