SQLite数据库之 - 第一次亲密接触

时间:2022-07-31 16:58:17
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并不支持存储过程,并且因为是读写单锁机制,不适合高并发的应用。