在C#中,如何连接已加密的Sqlite数据库

对数据加密分两种,一种是对数据库本身进行加密,另一种是对数据表中的数据进行加密,

如果SQLite数据库加密,我这里使用的一个管理工具叫SQLiteDeveloper,如下就可以加密数据库

如果在工具中不提供密码的情况下打开数据库,会给你错误提示如下:

或者在C# 使用错误的密码也会给你错误提示:

System.Data.SQLite.SQLiteException:“file is encrypted or is not a database

正确的连接方式就是在连接字符串中提供正确的密码:

using System;
using System.Collections.Generic;
using System.Data.SQLite;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OpenSqliteDBByPwd
{
    class Program
    {
        static void Main(string[] args)
        {

            string DB_PATH = "Data Source=EncryptedDB.db3; Password=1111";

            using (SQLiteConnection con = new SQLiteConnection(DB_PATH))
            {
                con.Open();
                string sqlStr = @"INSERT INTO Customer(CUST_NO,CUSTOMER)
                                  VALUES
                                  (
                                      3001,
                                      ‘Allen‘
                                  )";
                using (SQLiteCommand cmd = new SQLiteCommand(sqlStr, con))
                {
                    cmd.ExecuteNonQuery();
                }
            }
        }
    }
}
时间: 2024-07-31 22:13:02

在C#中,如何连接已加密的Sqlite数据库的相关文章

使用Android中API建议的方式实现SQLite数据库的增、删、改、查的操作

package com.examp.use_SQLite.dao; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.examp

Android中API建议的方式实现SQLite数据库的增、删、改、查的操作

package com.examp.use_SQLite.dao; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.examp

C#访问加密的SQLite数据库

前提:一个项目需要存储各种密码数据,使用的嵌入式的SQLite数据库.默认的SQLite数据库是没有加密的,这样相当不安全.找呀找呀找方法... 方法: 1.使用SQLite管理器加密. 部分SQLite管理器是有对SQLite数据库有加密功能的.本小菜使用的是:SQLite Developer管理工具.加密如下:        密码就设置OK了. 2.C#访问SQLite带密码的数据库 首先说说,不带密码的SQLite访问字符串格式,只需写入数据库所在路径即可: string ConnStr=

SQLite数据库--C#访问加密的SQLite数据库

前提:一个项目需要存储各种密码数据,使用的嵌入式的SQLite数据库.默认的SQLite数据库是没有加密的,这样相当不安全.找呀找呀找方法... 方法: 1.使用SQLite管理器加密. 部分SQLite管理器是有对SQLite数据库有加密功能的.本小菜使用的是:SQLite Developer管理工具.加密如下:        密码就设置OK了. 2.C#访问SQLite带密码的数据库 首先说说,不带密码的SQLite访问字符串格式,只需写入数据库所在路径即可: string ConnStr=

超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

我在玩webservice中遇到这个问题,情况是:(.net4.0)之前用的是好的,更新系统后出错.vs运行是好的,IIS运行出错..net底层抛错.换成.net2.0后完美运行.所以.net4.0出问题. ========================================================================================================= (转) 问题解决方法: 解决办法 1.在代码里面,把未关闭的连接关闭 2.扩大共

[bug]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

引言 自己弄了一个小项目——日程管理系统,在初始化日期时,查询了数据库,每个日期就会查询一次数据库,就导致了这个问题. 问题 出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the

连接字符串中Min Pool Size的理解是错误,超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

Min Pool Size的理解是错误的 假设我们在一个ASP.NET应用程序的连接字符串中将Min Pool Size设置为30: <add name="cnblogs" connectionString="Data Source=.;Initial Catalog=cnblogs;Min Pool Size=30" providerName="System.Data.SqlClient"/> 访问一下应用程序,然后用Windows

[转]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

超时时间已到.超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小. 解决办法:首先要做的是在我们使用连接后立即关闭连接.如果没有关闭连接那么连接将保存到连接池中知道GC来销毁.这种情况下你以为连接池没有到达最大值但实际上连接池已经到达了最大值 其次我们可以通过连接字符串中的Max Pool Size = N;来动态扩大连接池中的连接最大数量. 说明: 也就是在connectionString中如果未指定max pool size的值,则max p

超时时间已到。在从池中获取连接之前超时时间已过,连接池达到最大

NET网站出错信息如下: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.InvalidOperationException: 超时时间已到.超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小. 源错误: 执行当前 Web 请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息. “/”应用程序中的服务