为什么我需要SQLite
* 轻巧灵活,基于单个数据库文件,方便创建、移动,能方便的进行数据的分类存储(按业务、按功能、按日期、按客户等),非常适合与灵活的系统搭配使用。
* 部署容易,.NET环境只需一个dll文件(Access可能需要安装MDAC)。
* 开源。
SQLite开发环境与开发资料的准备
.Net SQLite数据库驱动:System.Data.SQLite.dll以及文档
SQLite GUI数据库工具:SQLite Expert PersonalEdition(个人版免费,够用了)
.Net SQLite数据库驱动源码:sqlite-netFx-source-1.0.76.0
C#动态创建SQLite数据库
调用SQLiteConnection.
CreateFile静态方法创建
SQLiteConnection.CreateFile(path)
path测试路径:Data目录存在,Data2目录不存在
var path1 =
"dummy1.db";//成功
var path2 =
"Data/dummy2.db";//成功
var path3 =
"Data\\dummy3.db";//成功
var path4 =
"c:\\Data\\dummy4.db";//成功
var path5 =
"Data2//dummy5.db";//错误,Data2目录不存在
var path6 =
"C:\\Data2\\dummy6.db";//错误,Data2目录不存在
SQLiteConnection.
CreateFile内部的实现源码:使用了File.Create创建0字节文件
/// <summary>
///
Creates a database file. This just creates a zero-byte file whichSQLite
/// will turn into a database when the file is openedproperly.
/// </summary>
/// <paramname="databaseFileName">Thefile
to create</param>
static
public void CreateFile(string
databaseFileName)
{
FileStream
fs = File.Create(databaseFileName);
fs.Close();
}
C#连接SQLite与数据库安全
常用的连接字符串生成
/// <summary>
/// 生成SQLite连接字符串
/// </summary>
public
static class SQLiteConnectionString
{
public
static string GetConnectionString(stringpath)
{
return
GetConnectionString(path,null);
}
public
static string GetConnectionString(stringpath,
string password)
{
if (string.IsNullOrEmpty(password))
return
"Data Source=" + path;
return
"Data Source=" + path + ";Password=" + password;
}
}
修改数据库密码
/// <summary>
/// 修改密码
/// </summary>
/// <paramname="path"></param>
/// <param name="newPassword"></param>
/// <param name="oldPassword">没有密码时为空</param>
public
static boolChangePassword(stringpath,
string newPassword,string
oldPassword = null)
{
try
{
varcon =
new SQLiteConnection(SQLiteConnectionString.GetConnectionString(path,
oldPassword));
con.Open();
con.ChangePassword(newPassword);
con.Close();
}
catch (Exception ex)
{
return
false;
}
return
true;
}
修改密码测试:
var path2 =
"Data/dummy2.db";//数据库初始密码是空值
ChangePassword(path2,
"123");//成功,数据库密码修改为123
ChangePassword(path2,
"234","");//错误,当前密码是123
ChangePassword(path2,
"234","123");//成功,数据库密码修改为123
ChangePassword(path2,
"","234");//成功,数据库密码修改为空
C#常用类型与SQLite类型的映射
C#类型
|
SQLite类型
|
int
|
INT, INTEGER
|
string
|
CHAR, VARCHAR,VARCHAR2等字符类型
|
long
|
INT64
|
bool
|
BOOLEAN
|
double
|
DOUBLE
|
DateTime
|
DATETIME
|
decmial
|
DECIMAL
|
short
|
SMALLINT
|
float
|
FLOAT
|
*上述类型映射不是唯一的;已进行写读的测试。
C#对SQLite数据库插入记录并返回自动递增ID
SQLite设置自动递增列:创建INTEGER数据类型的列,设置该列为主键,然后才能设置自动递增属性。
执行插入的sql后,调用last_insert_rowid()函数返回自动递增ID
object result =
null;
IDbConnection
conn = null;
IDbCommand
cmd = null;
//略…
inti =
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
if (i> 0)
{
cmd.CommandText =
"SELECT last_insert_rowid()";
result =
cmd.ExecuteScalar();
}
else
{
result = -1;
}
//略…
C#下的SQLite事务控制
已在TransactionScope管道下测试事务,在内部引发异常,事务能够终止。
try
{
using (System.Transactions.TransactionScope scope =
new System.Transactions.TransactionScope())
{
//引发异常
scope.Complete();
}
}
catch (Exception)
{
}
相关推荐
课堂作业实验6源码。利用android的内置数据库SQLite存储新闻信息,用listview组件以列表形式显示新闻内容,
本文实例讲述了C#解决SQlite并发异常问题的方法。分享给大家供大家参考,具体如下: 使用C#访问sqlite时,常会遇到多线程并发导致SQLITE数据库损坏的问题。 SQLite是文件级别的数据库,其锁也是文件级别的:多个线程...
IOS应用源码——SQLite.rar
具体使用可参考文章:http://t.csdn.cn/n54CZ
安卓Android源码——SqliteManager源码.zip
本文实例讲述了C#操作SQLite数据库之读写数据库的方法。分享给大家供大家参考,具体如下: 这里演示读写数据库并在窗体(Form)中显示其数据,其方式为: 读: Database(SQLite) -> DataAdapter -> DataSet -> ...
Android源码——SqliteManager 源码.zip
这是一个C#.NET示例程序, 简单演示了如何使用C#操作SQLite数据库。同时演示了如何用C#讲图片二进制数据存储到数据库和从数据库读取图片二进制数据并显示在PictureBox.
Android源码——SQLite 增、删、查、改操作源码.zip
C#应用SQLite的示例,在网络资料的基础上,用VS2008生成一个应用程序,包含了DLL文件
安卓Android源码——SQLite增、删、查、改操作源码.zip
用C#实现了对sqlite数据库的操作,包括动态连接库的引用,数据库操作类,增删改查,操作方便。
C#代码生成sqlite.db文件,可筛选表。
Android源码——数据库SQLite.zip
该示例演示C#如何连接SQLite并实现增删改查操作;演示批量操作,须要使用事务处理,才能提高效率;同时加入了SQLDapper框架,代码简练,实用,可以直接放在项目中使用;操作完成后,是完全释放了数据库资源的。该压缩...
C# sqlite 批量更新及性能测试
安卓Andriod源码——sqlite的一些基本操作,包括数据库创建、数据库版本升级、创建表、数据的增删改查.zip
安卓Android源码——sqlite的一些基本操作,包括数据库创建、数据库版本升级、创建表、数据的增删改查.zip
安卓Android源码——sqlite的一些基本操作,包括数据库创建、数据库版本升级、创建表、数据的增删改查.rar