1. 程式人生 > >關於.Net中使用SQLite數據庫的方法

關於.Net中使用SQLite數據庫的方法

ransac ade dmi open .net count linux 大致 插入

參考:

SQLite之C#連接SQLite
https://www.cnblogs.com/icebutterfly/p/7850689.html

關於SQLite的庫安裝比較特殊:

下載地址:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki --ok!
https://www.sqlite.org/download.html。---用於安卓、Mac、Linux等平臺的下載。

下載安裝包:
sqlite-netFx20-setup-bundle-x64-2005-1.0.108.0.exe ---測試ok!

或者 sqlite-netFx45-setup-bundle-x64-2012-1.0.108.0.exe 需要先卸載2.0版,再安裝。---測試ok!
(為了與其它軟件保持一致,建議安裝.Net 4.5版本的!)

默認安裝路徑:C:\Program Files\System.Data.SQLite

.Net引用:只需引用安裝bin目錄下的,System.Data.SQLite.dll一個文件即可!

註意:

1、帶bundle的表示動態庫是按混合模式編譯的,還有純x86和純x64模式的庫,共3種,按實際需要選擇。(與項目的生成--目標平臺一致才行!)

2、下載的庫,一定要安裝,才行!!(只引用,未安裝,運行會報錯!!)

3、.Net使用SQLite,只需要引用System.Data.SQLite.dll,根本用不著 sqlite3.dll。沒想到吧!

…………………………
SQLite 介紹:

SQLite,是一款輕型的數據庫,用於本地的數據儲存。開源數據庫。

優點,它占用資源非常的低,在嵌入式設備中需要幾百K的內存就夠了;作為輕量級數據庫,他的處理速度也足夠快;支持的的容量級別為T級;獨立: 沒有額外依賴;開源;支持多種語言。

詳細優點:

1、它的設計目標是嵌入式的,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。

2、跨平臺和多語言支持:它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,
比如C, C++, PHP, Perl, Java, C#,Python, Ruby等。

3、速度快:比起Mysql、PostgreSQL這兩款開源的世界著名數據庫管理系統來講,它的處理速度比他們都快。
(比一些流行的數據庫在大部分普通數據庫操作要快。)

4、支持數據庫大小至2TB。

5、足夠小, 大致13萬行C代碼, 4.43M

6、簡單, 輕松的API

7、源碼完全的開源, 你可以用於任何用途, 包括出售它。

8、它還支持事務處理功能等等。


使用.NET操作SQLLITE:

示例代碼1:

public string Query()
{
string datasource = "e:/tmp/test.db";
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
//連接數據庫
System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
connstr.DataSource = datasource;
connstr.Password = "admin";//設置密碼,SQLite ADO.NET實現了數據庫密碼保護
conn.ConnectionString = connstr.ToString();
conn.Open();
//創建表
System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
string sql = "CREATE TABLE test(username varchar(20),password varchar(20))";
cmd.CommandText = sql;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
//插入數據
sql = "INSERT INTO test VALUES(‘a‘,‘b‘)";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
//取出數據
sql = "SELECT * FROM test";
cmd.CommandText = sql;
System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader();
StringBuilder sb = new StringBuilder();
while (reader.Read())
{
sb.Append("username:").Append(reader.GetString(0)).Append("\n")
.Append("password:").Append(reader.GetString(1));
}
//MessageBox.Show(sb.ToString());

return sb.ToString();

}

示例代碼2:事務操作:

using (SQLiteConnection conn = new SQLiteConnection(connectionString))
{
conn.Open();
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = conn;
SQLiteTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n].ToString();
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (System.Data.SQLite.SQLiteException E)
{
tx.Rollback();
throw new Exception(E.Message);
}

關於.Net中使用SQLite數據庫的方法