返回介绍

1 C

2 C++

3 Windows

4 Linux

5 数据库

6 数据结构

7 算法

8 Qt

9 AS400

10 Web

12 C

13 框架

14 协议

15 工具

17 QA

5.5.2 Sqlite 加密

发布于 2023-10-02 20:38:17 字数 7131 浏览 0 评论 0 收藏 0

一、C#版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();

注: A、因为加密的函数是利用windows api,故加密后的数据库只能适用在windows平台,加密的方式是整体文件加密。 B、加密的算法是RC4,如果你想采用别的加密算法来加密,请参考ADO.NET 2.0 SQLite Data Provider 的源码来修改。 C、相关sqlite数据库操作类似ADO.NET 2.0。详见ADO.NET 2.0 SQLite Data Provider的帮助文档。 D、ADO.NET 2.0 SQLite Data Provider 版本为:1.0.53.0 ,SQLite版本 : 3.6.0。 E、开发环境为vs2008。

ADO.NET 2.0 SQLite Data Provider下载

5、代码实例

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;//引用
using System.Data.SQLite; //sqlite

namespace sMap
{
    public partial class Form1 : Form
    {
        //
        //定义初始坐标
        //
        public static double sdX = null;
        public static double sdY = null;
        public static string Addr = null;
        public static string db_str = null;

        //
        //数据库处理
        //
        public void SQLite_DB()
        { 
            try
            {
                //数据库连接
                SQLiteConnection m_dbConnection = null;
                m_dbConnection = new SQLiteConnection(db_str);

                //打开数据库
                m_dbConnection.SetPassword("2017");
                m_dbConnection.Open();

                //m_dbConnection.ChangePassword("2017");//给未加密数据库加密(为空时取消加密)

                //使用sql查询语句,找到坐标
                string sql = String.Format("select Address,Lngb,Latb from bs_460 where MCC = 460 and MNC={0:G} and AC={1:G} and CI={2:G}", (mnc.Text), (lac.Text), (cellid.Text));
                SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
                SQLiteDataReader reader = command.ExecuteReader();
                if (reader.Read()) //先在bs_460表中查找
                {
                    Addr = reader.GetString(0);
                    sdX = reader.GetDouble(1);
                    sdY = reader.GetDouble(2);
                }
                else  //未找到则在bs_cdma_460表中查找
                {
                    string sql_cdma = String.Format("select Address,Lngb,Latb from bs_cdma_460 where MCC = 460 and SID={0:G} and NID={1:G} and BID={2:G}", (mnc.Text), (lac.Text), (cellid.Text));
                    SQLiteCommand command_cdma = new SQLiteCommand(sql_cdma, m_dbConnection);
                    SQLiteDataReader reader_cdma = command_cdma.ExecuteReader();
                    if (reader_cdma.Read())
                    {
                        Addr = reader_cdma.GetString(0);
                        sdX = reader_cdma.GetDouble(1);
                        sdY = reader_cdma.GetDouble(2);
                    }
                    else
                    {
                        MessageBox.Show("请输入正确信息!");
                    }
                }
                Console.ReadLine();
                //关闭数据库
                m_dbConnection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据库处理异常,请重试!");
            }
        } 

    }
}

System.Data.SQLite.DLL下载

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文