1. 程式人生 > >C#操作Sqlite例項

C#操作Sqlite例項

C#中操作Sqlite資料庫,以下是一個封裝的操作類(可以打包成dll,本例sqlite.dll):

需要下載並新增引用Sqlite檔案System.Data.SQLite.DLL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;  // DataTable,DataRow
using System.Data.SQLite;   // System.Data.SQLite.DLL
using System.IO;    // Path

namespace sqlite
{
    /// <summary>
    /// 使用方法:
    /// using System.Data;
    /// using sqlite;
    /// Sqlite ms = new Sqlite("test.sqlite");
    /// string sql = "select * from `posts` where `id`
[email protected]
"; /// Dictionary<string, object> param = new Dictionary<string, object>(); /// param.Add("@id", 1); /// DataRow[] rows = ms.getRows(sql, param); /// </summary> public class Sqlite { private string _dbpath; private SQLiteConnection _conn; /// <summary> /// SQLite連線 /// </summary> private SQLiteConnection conn { get { if (_conn == null) { _conn = new SQLiteConnection( string.Format("Data Source={0};Version=3;", this._dbpath )); _conn.Open(); } return _conn; } } /// <summary> /// 建構函式 /// </summary> /// <param name="dbpath">sqlite資料庫檔案路徑,相對/絕對路徑</param> public Sqlite(string dbpath) { if (Path.IsPathRooted(dbpath)) { this._dbpath = dbpath; } else { this._dbpath = string.Format("{0}/{1}", AppDomain.CurrentDomain.SetupInformation.ApplicationBase, dbpath); } } /// <summary> /// 獲取多行 /// </summary> /// <param name="sql">執行sql</param> /// <param name="param">sql引數</param> /// <returns>多行結果</returns> public DataRow[] getRows(string sql, Dictionary<string, object> param=null) { List<SQLiteParameter> sqlite_param = new List<SQLiteParameter>(); if (param != null) { foreach (KeyValuePair<string, object> row in param) { sqlite_param.Add(new SQLiteParameter(row.Key, row.Value.ToString())); } } DataTable dt = this.ExecuteDataTable(sql, sqlite_param.ToArray()); return dt.Select(); } /// <summary> /// 獲取單行 /// </summary> /// <param name="sql">執行sql</param> /// <param name="param">sql引數</param> /// <returns>單行資料</returns> public DataRow getRow(string sql, Dictionary<string, object> param=null) { DataRow[] rows = this.getRows(sql, param); return rows[0]; } /// <summary> /// 獲取欄位 /// </summary> /// <param name="sql">執行sql</param> /// <param name="param">sql引數</param> /// <returns>欄位資料</returns> public Object getOne(string sql, Dictionary<string, object> param=null) { DataRow row = this.getRow(sql, param); return row[0]; } /// <summary> /// SQLite增刪改 /// </summary> /// <param name="sql">要執行的sql語句</param> /// <param name="parameters">所需引數</param> /// <returns>所受影響的行數</returns> public int query(string sql, Dictionary<string, object> param = null) { List<SQLiteParameter> sqlite_param = new List<SQLiteParameter>(); if (param != null) { foreach (KeyValuePair<string, object> row in param) { sqlite_param.Add(new SQLiteParameter(row.Key, row.Value.ToString())); } } return this.ExecuteNonQuery(sql, sqlite_param.ToArray()); } /// <summary> /// SQLite增刪改 /// </summary> /// <param name="sql">要執行的sql語句</param> /// <param name="parameters">所需引數</param> /// <returns>所受影響的行數</returns> private int ExecuteNonQuery(string sql, SQLiteParameter[] parameters) { int affectedRows = 0; System.Data.Common.DbTransaction transaction = conn.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(conn); command.CommandText = sql; if (parameters != null) { command.Parameters.AddRange(parameters); } affectedRows = command.ExecuteNonQuery(); transaction.Commit(); return affectedRows; } /// <summary> /// SQLite查詢 /// </summary> /// <param name="sql">要執行的sql語句</param> /// <param name="parameters">所需引數</param> /// <returns>結果DataTable</returns> private DataTable ExecuteDataTable(string sql, SQLiteParameter[] parameters) { DataTable data = new DataTable(); SQLiteCommand command = new SQLiteCommand(sql, conn); if (parameters != null) { command.Parameters.AddRange(parameters); } SQLiteDataAdapter adapter = new SQLiteDataAdapter(command); adapter.Fill(data); return data; } /// <summary> /// 查詢資料庫表資訊 /// </summary> /// <returns>資料庫表資訊DataTable</returns> public DataTable GetSchema() { DataTable data = new DataTable(); data = conn.GetSchema("TABLES"); return data; } } }

.net4需要在工程中新增App.config做一下申明:

App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
  <appSettings>
    <add key="dbpath" value="test.sqlite"/>
  </appSettings>
</configuration>
新建一個例項工程(本例wpf),新增引用本例封裝成包的sqlite.dll,本例讀取了同在App.config中的sqlite檔案位置的配置項dbpath

例項程式碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using System.Configuration; // System.configuration.dll
using sqlite;   //Sqlite.dll
using System.Data;
using note.DataContract;   

namespace note
{
    /// <summary>
    /// MainWindow.xaml 的互動邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // db init
            string dbpath = ConfigurationManager.AppSettings["dbpath"];
            Sqlite ms = new Sqlite(dbpath);

            // get data
            string sql = "select * from `notes` limit 10";
            DataRow[] rows = ms.getRows(sql);

        }
    }
}




相關推薦

C#操作Sqlite例項

C#中操作Sqlite資料庫,以下是一個封裝的操作類(可以打包成dll,本例sqlite.dll): 需要下載並新增引用Sqlite檔案System.Data.SQLite.DLL using System; using System.Collections.Generic

C#操作Sqlite快速入門及相關工具收集

收集 html urn net sel 2.3 dbn .org .sh Sqlite不需要安裝即可使用。Sqlite是不是那個System.Data.SQLite.DLL臨時創建了數據庫引擎?1.新建一個WinForm項目,引用System.Data.SQLite.DLL

C#操作SQLite資料庫時出錯總結--錯誤:“Insufficient parameters supplied to the command”

上網找了好久,有的說是引數名字錯了,有的說把"@parameter"改成"?"就可以了。 解決C#操作SQLite資料庫時出現“Insufficient parameters supplied to the command”的錯誤 將如下SQL語句: insert in

PC軟體開發技術之三:C#操作SQLite資料庫

我們在開發應用是經常會需要用到一些資料的儲存,儲存的方式有多種,使用資料庫是一種比較受大家歡迎的方式。但是對於一些小型的應用,如一些移動APP,通常的資料庫過於龐大,而輕便的SQLite則能解決這一問題。不但操作方便,而且只需要要一個檔案即可,在這裡我們來說一說使用C#語言操作SQLite資料庫

c++封裝SQlite例項

第一次結識SQLite是在上學期,有一個軟工的同學在看有關安卓應用的書籍,正好在實驗室碰到了他,他正在看的就是SQLite這個資料庫在安卓上的使用。從那以後就再也沒有了解過有關SQLite的資訊,上星期學長們的CDIO組在做一個遊戲,要用到這個資料庫,正好我也在這個組裡

一步一步實現C++操作SQLite資料庫

                                                                                               一步一步實現C++操作SQLite資料庫        SQLite,是一款輕型的資

C#與Sqlite資料庫操作例項

這是一個有關分頁的例項,僅供參考(程式碼來自網路) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Dr

C# linq2db操作sqlite進行刪除操作時異常

【問題描述】 在對linq2db進行刪除操作前,先將需要刪除的資料集查詢出來, 再呼叫db.[表物件].delete()方法執行刪除操作,程式碼如下: using (SqliteDB db = new SqliteDB(connectionString)) {

C++使用MySql++操作資料庫例項

有朋友讓幫忙寫個C++修改資料庫中使用者名稱密碼的工具,因為他是做VPN的,要給很多客戶端展示訪問速度等,有一個固定的使用者名稱來展示,但是每次給使用者試用的是不同的密碼,是隨機生成的。所以就想到了用MySql++這個資料庫操作類庫,我們專案中也是用這個的,非常好用。MySql++簡介:MySQL++ is

C#對SQLite的常用操作

Author: Kagula Date: 2013-2-18 環境 [1]Visual Studio 2010 Ultimate with SP1 正文 準備工作   從參考資料中下載SQLiteAdministrator工具,新建SQLite資料庫檔案“employee

SQLite Helper類,基於.net c#的SQLite資料庫操作

SQLite這個精巧的小資料庫,無需安裝軟體,只需要一個System.Data.SQLite.DLL檔案即可操作SQLite資料庫。但是據說功能卻非常強大。 簡介: SQLite是一個開源資料庫,現在已變得越來越流行,它的體積很小,被廣泛應用於各種不同型別的應用中。SQLi

c#經典程式設計例項(ado.net基本操作

一:連線資料庫之查詢學生個數 查詢學生個數程式碼如下: private void button1_Click(object sender, EventArgs e) { string s = "server=.;databas

C#操作RabbitMQ的完整例項

一、下載RabbitMQ 二、下載OTP 三、安裝OTP、RabbitMQ 四、配置RabbitMQ 找到bat的目錄 執行相關命令 1.新增使用者密碼 rabbitmqctl add_user wenli wenli 2.設定wenli為管理員rabbit

c#操作Excel

sum nbsp span eof esp ted ++ pen bsp using System; using System.Collections.Generic; using System.Text; using System.Data.OleDb; using S

C#操作WPS和office兼容性的問題

dsa r+ sdn 開發機 ror pep 一是 cells bar http://blog.csdn.net/yanpengliumin/article/details/50344799 最近一直在做的開發是關於導出word的功能,一開始的做法是在V

JAVA操作Sqlite

des pmc sse abd aeai afa csv hvm sqlite JAVA操作Sqlite

C#操作Word Aspose.Words組件介紹及使用—基本介紹與DOM概述

控制 包含 枚舉類 讀取 標記 服務器端 方法 python level 1.基本介紹 Aspose.Words是一個商業.NET類庫,可以使得應用程序處理大量的文件任務。Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XP

C# 操作字符串,在某些特定的字符後面或前面添加其它字符

解決方法 中醫 操作 字符 bsp ring 其它 正則 字符串 C# 操作字符串,在某些特定的字符後面或前面添加其它字符,解決方法: 字符串替換或正則表達式替換即可。 示例:string s = @"第1種方案(約6站)在 泉城廣場 坐 14路 到 按察司街北口/市立

C# 操作PDF

打印 pan 方式 屬性 試用 添加 poi read mark Spire.PDF組件概述 Spire.PDF是一個專業的PDF組件,用於在.NET應用程序中創建,編輯,處理和閱讀PDF文檔。支持豐富的PDF文檔處理操作,如PDF文檔合並/

C# 操作地址 從內存中讀取寫入數據(初級)

mode .com 陽光 pen bsp api bject str ddr 本示例以植物大戰僵屍為例, 實現功能為 每1秒讓陽光刷新為 9999.本示例使用的遊戲版本為 [植物大戰僵屍2010年度版], 使用的輔助查看內存地址的工具是 CE. 由於每次啟動遊戲, 遊戲