1 C
2 C++
3 Windows
4 Linux
5 数据库
- 5.1 SQL
- 5.2 Mysql
- 5.3 Oracle
- 5.5 Sqlite
- 5.6 数据库范式
- 5.7 游标
6 数据结构
7 算法
- 7.1 栈和队列
- 7.2 基本排序算法
- 7.3 合并排序
- 7.4 快速排序
- 7.5 优先级队列与堆排序
- 7.6 符号表及其基本实现
- 7.7 深度优先算法 DFS 和广度优先算法 BFS
- 7.8 桶排序
- 7.9 基数排序
8 Qt
9 AS400
10 Web
- 10.2 JavaScript
- 10.3 简述 cookie 和 session 及 token
- 10.4 Https 双向证书认证
- 10.5 URL 详解
12 C
13 框架
14 协议
15 工具
17 QA
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5.5.2 Sqlite 加密
一、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("数据库处理异常,请重试!");
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论