破碎了无痕

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
SQLite是一个比较火的免费的轻量级嵌入式数据库,比较适合桌面程序和小型应用,最新版本可以去官网下载:
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);
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();

        }
    }
}

 

目前SQLite并不支持存储过程,并且因为是读写单锁机制,不适合高并发的应用。

 

posted on 2012-06-01 15:48  破碎了无痕  阅读(479)  评论(0编辑  收藏  举报