SQLite是一個開源、免費的小型的Embeddable RDBMS(關系型資料庫),用C實作,記憶體占用較小,支援絕大數的SQL92标準,現在已變得越來越流行,它的體積很小,被廣泛應用于各種不同類型的應用中。SQLite已經是世界上布署得最廣泛的SQL資料庫引擎,被用在無以計數的桌面電腦應用中,還有消費電子裝置中,如行動電話、掌上電腦和MP3播放器等。
SQLite 的關鍵字清單, 支援的sql文法
System.Data.SQLite http://sqlite.phxsoftware.com/ 是Sqlite在.NET下的最新實作。
簡單介紹如下:
System.Data.SQLite 是一個原始SQLite的加強版. 它将是一個原版的sqlite3.dll完全替代品 (你甚至就可以把它重命名為sqlite3.dll). 它不需要連結.NET 運作時,是以可以脫離.NET獨立釋出, 然而它内嵌了一個完整的 ADO.NET 2.0 引擎,為開發提供了完整的支援.
特性簡介:
完整的 ADO.NET 2.0 實作
整個工程完全基于VS2005 和 ADO.NET 2.0全新建構, 使用了全部的ADO.NET framework新特性. 包括完整的 DbProviderFactory 支援, 自動的分布式事務調用, 廣泛的模式支援, 此外所有的類都是從 ADO.NET 2.0 的基類繼承下來的.
支援完整和精簡的 .NET Framework 以及 C/C++
這個庫不需要連結依賴.NET運作時,100%相容原始的sqlite3.dll,可以使用非托管的C/C++ 進行開發.
可移植的資料庫檔案
未加密的 SQLite 資料庫檔案可以自由的跨平台和處理器使用,包括非Windows平台. 加密之後的資料庫可以在全部Windows平台上使用.
可以信賴的速度,比包括Sql Server Mobile 在内的其它大多數嵌入式資料庫都要快速
SQLite'安裝所占用的空間相對于Sql Mobile可謂忽略不計了. 它在運作的時候占用更少的記憶體,同時生成的資料庫也更小.
資料庫加密
可以對整個資料庫檔案進行加密. 支援二進制和明文的密碼.
支援使用Visual Studio 2005 設計
你可以向Server Explorer添加一個SQLite 連接配接, 使用查詢設計器建立處查詢語句, 向一個資料集中拖拽一個表格等等! SQLite的開發者可以在包括體驗版在内的各種Visual Studio 2005下工作.
單檔案再釋出包容量在400kb以下
将SQLite本身和ADO.NET 封裝捆綁編譯在一起. 預編譯的二進制檔案提供了 x86, IA64, x64 和ARM 的版本.
廣泛的SQL語言支援
SQLite 支援大部分的SQL92 标準(see below). 支援命名和未命名的參數以 UTF-8 和UTF-16 編碼通過優化的管道傳入SQLite 核心.
使用者自定義的函數 和 排序
全面支援使用者自定義函數和排序方式,意味着你可以用自己喜歡的.NET語言來實作SQLite沒有提供的特性. 這一切将非常的簡單.
提供了全部的源代碼. 100% 免費.
全部的封裝庫源代碼都是公有的. 無論是個人還是商業應用都沒有任何的協定限制.
下載下傳位址:http://sourceforge.net/projects/sqlite-dotnet2/files/
下載下傳後安裝,在安裝路徑下找到 System.Data.SQLite.DLL,複制到項目中,添加引用,就可以直接使用了。
SQLite GUI工具很多,SQLite GUI用戶端清單 http://www.sqlite.org/cvstrac/wiki?p=ManagementTools
我使用的“SQLite Administrator” 下載下傳位址:http://download.orbmu2k.de/files/sqliteadmin.zip
下載下傳不用安裝就可使用,圖形化界面,操作起來簡單友善。
在網上搜尋到一個 SQLite Helper類基于.net c#的SQLite資料庫操作類
代碼如下:
代碼
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Web;
5 using System.Configuration;
6 using System.Data;
7 using System.Data.SQLite;
8 namespace DAL
9
10 {
11 public class Sqlite
12
13 {
14 /// <summary>
15 /// 獲得連接配接對象
16 /// </summary>
17 /// <returns></returns>
18 public static SQLiteConnection GetSQLiteConnection()
19 {
20 return new SQLiteConnection("Data Source=" + System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["db"].ToString()));
21 }
22
23 private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p)
24 {
25 if (conn.State != ConnectionState.Open)
26 conn.Open();
27 cmd.Parameters.Clear();
28 cmd.Connection = conn;
29 cmd.CommandText = cmdText;
30 cmd.CommandType = CommandType.Text;
31 cmd.CommandTimeout = 30;
32 if (p != null)
33
34 {
35 foreach (object parm in p)
36 cmd.Parameters.AddWithValue(string.Empty, parm);
37 //for (int i = 0; i < p.Length; i++)
38 // cmd.Parameters[i].Value = p[i];
39 }
40 }
41 public static DataSet ExecuteDataset(string cmdText, params object[] p)
42 {
43 DataSet ds = new DataSet();
44 SQLiteCommand command = new SQLiteCommand();
45 using (SQLiteConnection connection = GetSQLiteConnection())
46 {
47 PrepareCommand(command, connection, cmdText, p);
48 SQLiteDataAdapter da = new SQLiteDataAdapter(command);
49 da.Fill(ds);
50 }
51 return ds;
52 }
53 public static DataRow ExecuteDataRow(string cmdText, params object[] p)
54 {
55 DataSet ds = ExecuteDataset(cmdText, p);
56 if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
57 return ds.Tables[0].Rows[0];
58 return null;
59 }
60 /// <summary>
61 /// 傳回受影響的行數
62 /// </summary>
63 /// <param name="cmdText">a</param>
64 /// <param name="commandParameters">傳入的參數</param>
65 /// <returns></returns>
66 public static int ExecuteNonQuery(string cmdText, params object[] p)
67 {
68 SQLiteCommand command = new SQLiteCommand();
69 using (SQLiteConnection connection = GetSQLiteConnection())
70 {
71 PrepareCommand(command, connection, cmdText, p);
72 return command.ExecuteNonQuery();
73 }
74 }
75 /// <summary>
76 /// 傳回SqlDataReader對象
77 /// </summary>
78 /// <param name="cmdText"></param>
79 /// <param name="commandParameters">傳入的參數</param>
80 /// <returns></returns>
81 public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p)
82 {
83 SQLiteCommand command = new SQLiteCommand();
84 SQLiteConnection connection = GetSQLiteConnection();
85 try
86 {
87 PrepareCommand(command, connection, cmdText, p);
88 SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
89 return reader;
90 }
91 catch
92 {
93 connection.Close();
94 throw;
95 }
96 }
97 /// <summary>
98 /// 傳回結果集中的第一行第一列,忽略其他行或列
99 /// </summary>
100 /// <param name="cmdText"></param>
101 /// <param name="commandParameters">傳入的參數</param>
102 /// <returns></returns>
103 public static object ExecuteScalar(string cmdText, params object[] p)
104 {
105 SQLiteCommand cmd = new SQLiteCommand();
106 using (SQLiteConnection connection = GetSQLiteConnection())
107 {
108 PrepareCommand(cmd, connection, cmdText, p);
109 return cmd.ExecuteScalar();
110 }
111 }
112 /// <summary>
113 /// 分頁
114 /// </summary>
115 /// <param name="recordCount"></param>
116 /// <param name="pageIndex"></param>
117 /// <param name="pageSize"></param>
118 /// <param name="cmdText"></param>
119 /// <param name="countText"></param>
120 /// <param name="p"></param>
121 /// <returns></returns>
122 public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params object[] p)
123 {
124 if (recordCount < 0)
125 recordCount = int.Parse(ExecuteScalar(countText, p).ToString());
126 DataSet ds = new DataSet();
127 SQLiteCommand command = new SQLiteCommand();
128 using (SQLiteConnection connection = GetSQLiteConnection())
129 {
130 PrepareCommand(command, connection, cmdText, p);
131 SQLiteDataAdapter da = new SQLiteDataAdapter(command);
132 da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result");
133 }
134 return ds;
135 }
136 }
137 }
在VS中使用System.Data.SQLite實作增删改查功能,網上有很多相關執行個體:
3 using System.Web;
4 using System.Web.UI;
5 using System.Web.UI.WebControls;
6 using System.Data.SQLite;
7
8 namespace Demo
9 {
10 public partial class TestSqlLite : System.Web.UI.Page
11 {
12 protected void Page_Load(object sender, EventArgs e)
13 {
14
15 }
16
17 protected void btnTest_Click(object sender, EventArgs e)
18 {
19 SQLiteConnection.ClearAllPools();
20 SQLiteConnection.CreateFile(Server.MapPath("~") + "/UserData.dbx");
21 SQLiteConnection conn = new SQLiteConnection("Data Source=" + Server.MapPath("~" + "/UserData.dbx"));
22 conn.Open();
23 Response.Write("打開資料庫成功~~<br />");
24
25 SQLiteCommand cmd = new SQLiteCommand();
26 cmd.CommandText = "create table Users (UserID int primary key,UserName varchar(100) not null,UserPassword varchar(100) not null)";
27 cmd.Connection = conn;
28 cmd.ExecuteNonQuery();
29
30 for (int i = 0; i < 100; i++)
31 {
32 cmd.CommandText = "insert into Users (UserID,UserName,UserPassword) values (" + i + ",'TestUser_" + i + "','" + DateTime.Now.ToString().Replace(" ", "-").Replace(":", "-") + "')";
33 cmd.ExecuteNonQuery();
34 }
35
36 Response.Write("插入成功~~<br />");
37
38 cmd.CommandText = "select Username from Users where UserID=1";
39 cmd.Connection = conn;
40 string tempUserName = cmd.ExecuteScalar().ToString();
41
42 Response.Write("單個值查詢結果為:" + tempUserName + "<br /><br />");
43
44
45 cmd.CommandText = "select * from Users ";
46 cmd.Connection = conn;
47 SQLiteDataReader sdrInfo = cmd.ExecuteReader();
48 if (sdrInfo != null)
49 {
50 int userID = 0;
51 string userName = string.Empty;
52 string userPassword = string.Empty;
53 while (sdrInfo.Read())
54 {
55 userID = Convert.ToInt32(sdrInfo["UserID"]);
56 userName = sdrInfo["UserName"].ToString();
57 userPassword = sdrInfo["UserPassword"].ToString();
58
59 Response.Write("UserID:" + userID + "<br />");
60 Response.Write("UserName:" + userName + "<br />");
61 Response.Write("UserPassword:" + userPassword + "<br />");
62 Response.Write("<br />");
63 }
64 sdrInfo.Close();
65 sdrInfo.Dispose();
66 }
67
68 cmd.CommandText = "update Users set UserPassword='linxiang'";
69 cmd.Connection = conn;
70 cmd.ExecuteNonQuery();
71 Response.Write("更新資料庫中的資料成功.");
72
73 Response.Write("以下結果為查詢從資料庫中經過編輯過後的資料項<br /><br />");
74 cmd.CommandText = "select * from Users ";
75 cmd.Connection = conn;
76 sdrInfo = cmd.ExecuteReader();
77 if (sdrInfo != null)
78 {
79 int userID = 0;
80 string userName = string.Empty;
81 string userPassword = string.Empty;
82 while (sdrInfo.Read())
83 {
84 userID = Convert.ToInt32(sdrInfo["UserID"]);
85 userName = sdrInfo["UserName"].ToString();
86 userPassword = sdrInfo["UserPassword"].ToString();
87
88 Response.Write("UserID:" + userID + "<br />");
89 Response.Write("UserName:" + userName + "<br />");
90 Response.Write("UserPassword:" + userPassword + "<br />");
91 Response.Write("<br />");
92 }
93 sdrInfo.Close();
94 sdrInfo.Dispose();
96
97 conn.Clone();
98 conn.Dispose();
99 }
100 }
101 }