1。从www.sqlite.org下载SQLite 3.3.4的版本
为了方便,把它解压了,就一个SQLite3.exe,放入Windows目录下。 Cmd 进入命令行
创建数据库文件: >SQLite3 d:\test.db 就生成了一个test.db在d盘。这样同时也SQLite3挂上了这个test.db
查看可用命令 >.help 回车即可( 可以在这里直接输入SQL语句创建表格 用 ; 结束,然后回车就可以看到了)
查看创建了多少表 >.tables
查看表结构 >.schema 表名
查看目前挂的数据库 >.database
把查询输出到文件 >.output 文件名 > 查询语句; 查询结果就输出到了文件c:\query.txt
把查询结果用屏幕输出 >.output stdout
把表结构输出,同时索引也会输出 >.dump 表名
退出 >.exit 或者.quit
也可以在网站http://sqlitestudio.one.pl/index.rvt?act=download 上下载sqlitestudio进行图形化操作,用法和SQL Server相似。添加时右没有库就会新建在程序所在目录下,否则会附加所选库。
2。从http://sqlite.phxsoftware.com/下载Ado.net驱动。
下载了安装,在安装目录中存在System.Data.SQLite.dll
我们只需要拷贝这个文件到引用目录,并添加引用即可对SQLite数据库操作了
所有的Ado.net对象都是以SQLite开头的,比如SQLiteConnection
连接串只需要如下方式
Data Source=d:\test.db 或者DataSource=test.db--应用在和应用程序或者.net能够自动找到的目录
3。SQL语法
由于以前用SQLServer或者ISeries,所以DDL的语法很汗颜
1)创建一个单个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 ) ;
2)创建一个多个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 (CdType,CdCode)
) ;
3)创建索引, 还可以视图等等。
CREATE INDEX [IX_Account] ON [Account]([IsCheck], [UserName]);4.可用的SQL语句
Select * from Sqlite_master
Select datetime('now')
Select date('now')
Select time('now')
以及很多函数,具体可以参考SQLite的wiki.
成批插入的时候,启动事务,比不启动事务快n倍
还有就是尽量使用参数化的SQL,估计和商用DB一样能够自动Prepare.
===========
sqlite可以在shell/dos command底下直接执行命令:sqlite3 film.db "select * from film;"
输出 HTML 表格:sqlite3 -html film.db "select * from film;"
将数据库「倒出来」:sqlite3 film.db ".dump" > output.sql
利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的SQL数据库备份了):sqlite3 film.db < output.sql
在大量插入资料时,先打这个指令:begin;
插入完资料后要打这个指令,资料才会写进数据库中:commit;
5 C#使用SQLite数据库
1 从http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the SQLite database engine)下载驱动程序。
2 安装后,运行test.exe,测一下性能。
3 打开visual studio,新建数据连接,可以看到数据源多了一项SQLite DataBase File.用VS建立库 E:\ghc1.db
4 System.Data.SQLite是混合模式程序集,是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时
中加载该程序集。故需要在App.config中配置如下参数。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup> </configuration>5 提供一个自己写的SQLiteHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SQLite; using System.Data; using System.Data.Common; namespace Com.Luminji.DataService.SQLHelpers { public class SQLiteHelper { ///<summary> /// ConnectionString样例:Datasource=Test.db3;Pooling=true;FailIfMissing=false ///</summary> public static string ConnectionString { get; set; } private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Parameters.Clear(); cmd.Connection = conn; cmd.CommandText = cmdText; cmd.CommandType = CommandType.Text; cmd.CommandTimeout = 30; if (p != null) { foreach (object parm in p) cmd.Parameters.AddWithValue(string.Empty, parm); } } public static DataSet ExecuteQuery(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { DataSet ds = new DataSet(); PrepareCommand(command, conn, cmdText, p); SQLiteDataAdapter da = new SQLiteDataAdapter(command); da.Fill(ds); return ds; } } } public static int ExecuteNonQuery(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { PrepareCommand(command, conn, cmdText, p); return command.ExecuteNonQuery(); } } } public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { PrepareCommand(command, conn, cmdText, p); return command.ExecuteReader(CommandBehavior.CloseConnection); } } } public static object ExecuteScalar(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { PrepareCommand(command, conn, cmdText, p); return command.ExecuteScalar(); } } } } }
另一种方法:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SQLite; namespace SqliteWebApp { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //这个文件是预先生成的数据库文件 string sqliteFilePath = Server.MapPath("~/App_Data/firstsqlite.db"); DataSet ds = new DataSet(); //声明一个Sqlite数据库的链接 using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + sqliteFilePath)) { //创建sqlite命令 using (SQLiteCommand comm = conn.CreateCommand()) { //打开数据库链接 conn.Open(); //插入数据 comm.CommandText = "INSERT INTO [t] VALUES(10,'Hello 9')"; comm.ExecuteNonQuery(); //更新数据 comm.CommandText = "UPDATE [t] SET name = 'Hello 10' WHERE id = 10"; comm.ExecuteNonQuery(); //使用参数插入数据 comm.CommandText = "INSERT INTO [t] VALUES(@id,@name)"; comm.Parameters.AddRange( new SQLiteParameter[]{ CreateSqliteParameter("@id",DbType.Int32,4,11), CreateSqliteParameter("@name",DbType.String,10,"Hello 11") }); comm.ExecuteNonQuery(); comm.Parameters.Clear(); //select数据分页用limit就行,很方便 comm.CommandText = "Select * From MAIN.[t]"; using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(comm)) { adapter.Fill(ds); } } } gv1.DataSource = ds; gv1.DataBind(); } ///<summary> /// 放回一个SQLiteParameter ///</summary> ///<param name="name">参数名字</param> ///<param name="type">参数类型</param> ///<param name="size">参数大小</param> ///<param name="value">参数值</param> ///<returns>SQLiteParameter的值</returns> static private SQLiteParameter CreateSqliteParameter(string name,DbType type,int size,object value) { SQLiteParameter parm = new SQLiteParameter(name,type, size); parm.Value = value; return parm; } } }转载地址: http://www.cnblogs.com/genghechuang/archive/2011/10/20/2218853.html