【问题标题】:Connection with SQLite db encrypted与加密的 SQLite db 的连接
【发布时间】:2019-11-25 14:03:57
【问题描述】:

我正在尝试创建一个与通过密码加密的 SQLite 数据库进行通信的程序。如果我尝试使用没有任何密码的数据库,它可以工作,但使用带有密码的数据库,在连接后,执行查询时会出现错误“文件不是数据库”。这是代码:

using Microsoft.Data.Sqlite;
using System;
using System.Data.SQLite;

...

string conn = "Data Source=C:\\Users\\Utente\\Desktop\\SQLite\\sqlite tools\\DB\\provapassword.db;";
SqliteConnection sql_conn = new SqliteConnection(conn);
sql_conn.Open();
Console.WriteLine("Connected to provapassword");
var cmd = sql_conn.CreateCommand();
cmd.CommandText = "SELECT quote($password);";
cmd.Parameters.AddWithValue("$password", "prova");
var quotedPassword = (string)cmd.ExecuteScalar();
cmd.CommandText = "PRAGMA key = " + quotedPassword;
cmd.Parameters.Clear();
cmd.ExecuteNonQuery();                  
try
{     
//INSERT
string query = "INSERT INTO nomi values(10, \"AAA\")";
cmd.CommandText = query;
if (cmd.ExecuteNonQuery() != 0)
    Console.WriteLine("OK");
else
    Console.WriteLine("Error");
sql_conn.Close();
Console.WriteLine("Connection close"); 
}
catch (Exception e)
{
   Console.WriteLine(e.Message.ToString());
}

你有什么建议吗?谢谢

【问题讨论】:

  • 访问数据库的密码是into the connection string,而不是语句。
  • 你是如何加密数据库的?一些 UI 浏览器工具使用与 SQLIte NET 提供程序不同的加密方法。另请访问connectionstrings.com/sqlite 获取连接字符串信息
  • @ŇɏssaPøngjǣrdenlarp 我使用 DB Browser for SQLCipher

标签: c# sqlite


【解决方案1】:

在进行任何操作之前,请按如下所示设置密码:

SQLiteConnection conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
conn.SetPassword("password");
conn.Open();

【讨论】:

  • 我需要导入任何其他库吗?因为我收到此错误:“'SQLiteConnetion' 不包含'SetPassword' 的定义,并且找不到接受'SQLiteConnection' 类型的第一个参数的可访问扩展方法'SetPassword'(您是否缺少 using 指令或程序集引用?) 我使用:使用 Microsoft.Data.Sqlite;使用 System;使用 System.Data.SQLite;
猜你喜欢
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 2016-05-03
相关资源
最近更新 更多