的生命和statement差不多你也可以手动结束它。
默认情况下事务自动提交当然你也可以通过BEGIN..COMMIT手动提交。
接下来就是锁的问题。
关于这个图有以下几点值得注意 A、一个事务可以在UNLOCKEDRESERVED或EXCLUSIVE三种状态下开始。
默认情况下在UNLOCKED时开始。
B、白色框中的UNLOCKED PENDING SHARED和 RESERVED可以在一个数据库的同一时存在。
C、从灰色的PENDING开始事情就变得严格起来意味着事务想得到排斥锁EXCLUSIVE注意与白色框中的区别。
虽然锁有这么多状态但是从体质上来说只有两种情况读事务和写事务。
读者可以从http://www.sqlite.org/下载SQLite 3.3.4的版本 Cmd 进入命令行 创建数据库文件: SQLite3 d:test.db 回车 就生成了一个test.db在d盘。
这样同时也SQLite3挂上了这个test.db 用.help可以看看有什么命令 .help 回车即可 看看有创建了多少表 .tables 看表结构 .schema 表名 看看目前挂的数据库 .database 如果要把查询输出到文件 .output 文件名 查询语句 把查询结果用屏幕输出 .output stdout 把表结构输出同时索引也会输出 .dump 表名 退出 .exit 或者.quit 从http://sqlite.phxsoftware.com/下载Ado.net驱动。
下载了安装在安装目录中存在System.Data.SQLite.dll 我们只需要拷贝这个文件到引用目录并添加引用即可对SQLite数据库操作了 所有的Ado.net对象都是以SQLite开头的比如SQLiteConnection 连接串只需要如下方式 Data Sourced:test.db 或者DataSourcetest.db--应用在和应用程序或者.net能够自动找到的目录 剩下的就很简单了 SQL语法 由于以前用SQLServer或者ISeries所以DDL的语法很汗颜 创建一个单个Primary Key的table CREATE TABLE Admin UserName nvarchar 20 PRIMARY KEY NOT NULL Password nvarchar 50 NOT NULL Rank smallint NOT NULL MailServer nvarchar 50 NOT NULL MailUser nvarchar 50 NOT NULL MailPassword nvarchar 50 NOT NULL Mail nvarchar 50 NOT NULL 创建一个多个Primary Key的table CREATE TABLE CodeDetail CdType nvarchar 10 NOT NULL CdCode nvarchar 20 NOT NULL CdString1 ntext NOT NULL CdString2 ntext NOT NULL CdString3 ntext NOT NULL PRIMARY KEY CdTypeCdCode 创建索引 CREATE INDEX IX_Account ON AccountIsCheck UserName 还可以视图等等。
SQLite 分页查询 写法1: SELECT FROM TABLE1 LIMIT 20 OFFSET 20 写法2: SELECT FROM TABLE1 LIMIT 20 20 SQLite 文件的压缩 在多次删除数据、插入数据、更新数据后数据库体积增大但实际有效数据量很小则需要对数据库进行压缩、整理把已经删除的数据从物理文件中移除。
调用一下SQL命令即可 VACUUM VACUUM的实现 数据插入与更新 使用REPLACE替代INSERT、UPDATE命令。
在无满足条件记录则执行Insert有满足条件记录则执行UPDATE。
REPLACE INTO TABLE1col1 col2 col3 VALUESval1 val2val3 Insert or Replace Into 和Replace Into 的效果是一样的上面这句话也可以这样写 Insert or Replace INTO TABLE1col1 col2 col3 VALUESval1 val2val3 字符编码转换 sqlite3的源码中提供了utf8ToUnicode、unicodeToUtf8、mbcsToUnicode、unicodeToMbcs、sqlite3_win32_mbcs_to_utf8 、utf8ToMbcs 等8个函数进行字符在不同编码间的转换但未在sqlite3.def、sqlite3.h文件中列出即未对外公开。
这些函数中都使用了MultiByteToWideChar、WideCharToMultiByte两个函数实现字符间转换。
开发示例 using System using System.Data using System.Data.SQLite using System.Collections.Generic using System.IO namespace FileSystemWatcthrDemo.DataHelper public class SqLiteHelper /// /// ConnectionString样例DatasourceTest.db3PoolingtrueFailIfMissingfalse /// public static string ConnectionString get return Data source DataBasePath set throw new NotImplementedException public static string DataBasePath get return SpringYang.db private static object lockObject new object private sta