zoukankan      html  css  js  c++  java
  • 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 与其它并不兼容.

  • 相关阅读:
    地图 SDK 系列教程-在地图上展示指定区域
    [奇思妙想]下一个和微博、微信同级别的应用为是什么样的
    [办公自动化]EXCEL不大,但是保存很慢
    [奇思妙想]公共图书馆+快递
    [奇思妙想]“停哪了”
    [IT学习]阿铭Linux 微信公众号 每日一题 解析
    [IT学习]GIT 学习
    [故障处理]西部数据wd elements xp 无法识别
    [奇思妙想]无人机
    [IT学习]跟阿铭学linux(第3版)
  • 原文地址:https://www.cnblogs.com/yjhb/p/11804229.html
Copyright © 2011-2022 走看看