永发信息网

Qt如何对sqlite数据库进行加密?

答案:2  悬赏:50  手机版
解决时间 2021-03-11 16:39
  • 提问者网友:饥饿走向夜
  • 2021-03-10 16:12
Qt内置的sqlite数据库不支持加密功能, 导致数据用记事本都可以看到,请问怎样对sqlite数据库进行加密呢? 看网上说可以用sqlitecipher,但我根本不知道sqlitecipher是个什么东西? 有木有详细教程啊.
最佳答案
  • 五星知识达人网友:怙棘
  • 2021-03-10 17:34
给SQLite数据库加密解密的方法:
1、创建空的sqlite数据库。
//数据库名的后缀你可以直接指定,甚至没有后缀都可以
//方法一:创建一个空sqlite数据库,用IO的方式
FileStream fs = File.Create(“c:\\test.db“);
//方法二:用SQLiteConnection
SQLiteConnection.CreateFile(“c:\\test.db“);

创建的数据库是个0字节的文件。
2、创建加密的空sqlite数据库
//创建一个密码为password的空的sqlite数据库
SQLiteConnection.CreateFile(“c:\\test2.db“);
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2.db“);
SQLiteConnection cnn = new SQLiteConnection(“Data Source=D:\\test2.db“);
cnn.Open();
cnn.ChangePassword(“password“);

3、给未加密的数据库加密
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test.db“);
cnn.Open();
cnn.ChangePassword(“password“);

4、打开加密sqlite数据库
//方法一
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2.db“);
cnn.SetPassword(“password“);
cnn.Open();
//方法二
SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder.DataSource = @”c:\test.db“;
builder.Password = @”password“;
SQLiteConnection cnn = new SQLiteConnection(builder.ConnectionString);
cnn .Open();

除了用上述方法给SQLite数据库加密以外,您还可以使用专业的文件加密软件将SQLite数据库加密。

超级加密 3000采用先进的加密算法,使你的文件和文件夹加密后,真正的达到超高的加密强度,让你的加密数据无懈可击。

超级加密3000使用起来,只要点击需要加密的文件的右键,即可轻松实现文件的加密。

解密只要双击已加密文件,输入密码即可轻松搞定。
全部回答
  • 1楼网友:一叶十三刺
  • 2021-03-10 18:32
//自己设置连接名,不使用默认连接名     if (sdbsqlite.contains("conn2sqlite"))      {         sdbsqlite = qsqldatabase::database("conn2sqlite");     }     else     {         sdbsqlite = qsqldatabase::adddatabase(             "qsqlite","conn2sqlite");     }     sdbsqlite.setdatabasename("fivechess.database"); //数据库名称这是连接 if (sdbsqlite.open())     {         int rltrownumber = 0; //查询出来的结果列数         qstring strsql1 =              qstring("select name,grade,integration,round,victory,defeat,rank"             " from member where account = '%0' and password = '%1';")             .arg(stracn,strpsdornew);         qsqlquery query1(sdbsqlite);         query1.exec(strsql1);         while (query1.next())         {             if (sdbsqlite.driver()->hasfeature(qsqldriver::querysize))             {                 //速度快                 rltrownumber = query1.size();             }             else             {                 //速度很慢                 //实际执行的是这个                 query1.last();                 rltrownumber = query1.at() + 1;             }         }         sdbsqlite.close();         }这是查询
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯