http://www.sqlite.org/, 它只包含一个名叫SQLite3.exe的程序,下载完之后可以将其拷入系统盘Windows目录下,以方便命令行执行命。
打开cmd命令行,键入 sqlite3 D:\Projects\SQLite\chytest.db即可创建新的或连接已有的DB,这时候DB已经挂到了SQLite3,可以执行增删查找操作了,比如:
CREATE TABLE [Animals] (
[AnimalId] INTEGER PRIMARY KEY AUTOINCREMENT,
[AnimalName] NVARCHAR(100) NOT NULL ON CONFLICT ROLLBACK,
[Color] VARCHAR(50) NOT NULL ON CONFLICT ROLLBACK DEFAULT Red,
[Gender] CHAR(1) NOT NULL ON CONFLICT ROLLBACK DEFAULT M);
[AnimalId] INTEGER PRIMARY KEY AUTOINCREMENT,
[AnimalName] NVARCHAR(100) NOT NULL ON CONFLICT ROLLBACK,
[Color] VARCHAR(50) NOT NULL ON CONFLICT ROLLBACK DEFAULT Red,
[Gender] CHAR(1) NOT NULL ON CONFLICT ROLLBACK DEFAULT M);
insert into Animals (AnimalName, Color, Gender) values ('Cat', 'Black', 'F') ;
select * from Animals;
必须注意每一个命令都需要以分号结束,否则SQLite会认为命令输入未结束,继续等待输入而不执行。
Sqlite也有很多可视化的管理工具, 比如 SQLite Expert, 可以去官网下载,有免费版本可用:
安装完之后可以看看它自带的Demo DB,里面有很多表,可以大致学习一下基本结构和语法。
如何在Asp.net中使用SQLite
首先需要下载针对SQLite的驱动,所谓驱动也就是一个程序集System.Data.SQLite.dll罢了,可以去这里下载适合自己的驱动:
驱动装完之后, 可以把里面的 System.Data.SQLite.dll 文件拷到你的程序目录,我们需要的只有它。 用起来就很简单了,直接在project里添加引用,然后跟使用Sql Server一样就可以了,参考以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data;
namespace SQLiteConsoleApp
{
class Program
{
static void Main( string[] args)
{
SQLiteConnection conn = new SQLiteConnection( " Data Source=chytest.db ");
SQLiteCommand cmd = new SQLiteCommand( " select * from tbl1 ", conn);
SQLiteCommand cmd2 = new SQLiteCommand( " insert into tbl1 (one, two) values ('code insert', 51) ", conn);
conn.Open();
// insert new data
// cmd2.ExecuteNonQuery();
// use reader to read the data
var reader = cmd.ExecuteReader();
while (reader.Read())
{
if (reader.HasRows)
{
Console.WriteLine(reader[ 0].ToString() + " ~ " + reader[ 1].ToString());
}
}
reader.Close();
// use adapter to read data into datatable
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
DataTable dt = new DataTable( " tbl1 ");
adapter.Fill(dt);
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(row[ 0].ToString() + " ^ " + row[ 1].ToString());
}
}
conn.Close();
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data;
namespace SQLiteConsoleApp
{
class Program
{
static void Main( string[] args)
{
SQLiteConnection conn = new SQLiteConnection( " Data Source=chytest.db ");
SQLiteCommand cmd = new SQLiteCommand( " select * from tbl1 ", conn);
SQLiteCommand cmd2 = new SQLiteCommand( " insert into tbl1 (one, two) values ('code insert', 51) ", conn);
conn.Open();
// insert new data
// cmd2.ExecuteNonQuery();
// use reader to read the data
var reader = cmd.ExecuteReader();
while (reader.Read())
{
if (reader.HasRows)
{
Console.WriteLine(reader[ 0].ToString() + " ~ " + reader[ 1].ToString());
}
}
reader.Close();
// use adapter to read data into datatable
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
DataTable dt = new DataTable( " tbl1 ");
adapter.Fill(dt);
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(row[ 0].ToString() + " ^ " + row[ 1].ToString());
}
}
conn.Close();
Console.ReadLine();
}
}
}
目前SQLite并不支持存储过程,并且因为是读写单锁机制,不适合高并发的应用。