1. 程式人生 > >C#對SQLite的常用操作

C#對SQLite的常用操作

Author: Kagula

Date: 2013-2-18

環境

[1]Visual Studio 2010 Ultimate with SP1

正文

準備工作

  從參考資料中下載SQLiteAdministrator工具,新建SQLite資料庫檔案“employees.s3db”,並新增表“employee”。

下面是建這張表所用的SQL語句

CREATETABLE [employee] (

[EMPLOYEE_ID]INTEGER  NOT NULL PRIMARY KEYAUTOINCREMENT,

[EMPLOYEE_NAME]VARCHAR(32)  NOT NULL,

[EMPLOYEE_AGE]INTEGER DEFAULT '0' NOT NULL

)

在WPF工程中的引用

第一步:從參考資料[2]中下載“SQLite-1.0.66.0-binaries.zip”檔案並解壓縮。

第二步:新建WPF工程並引入“..\bin\ManagedOnly\System.Data.SQLite.DLL”檔案。在project中新建AppData資料夾新增已存在的item,把你剛才新建的SQLite檔案加進專案裡去,設定Item的“Copy to Output”屬性為“Copy if newer”。

第三步:參考資料[4]下載“sqlite-dll-win32-x86-3071502.zip”檔案解壓出“sqlite3.dll”檔案並放到系統資料夾下,例如:“C:\Windows\System32

”路徑

第四步:參考下面的C#原始碼,對資料庫檔案中的表進行list、新增、刪除、修改操作。


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.Data.SQLite;
using System.Data;
using System.Data.Common;
using System.Diagnostics;

/**
 * Title:演示WPF4工程如何對SQLite資料庫檔案中的表進行操作
 * Author:Kagula
 * Date:2013-02-18
 * Remark:測試環境[1]WinXPSP3[2]VS2010SP1
 * */
namespace testSQLiteInWPF
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        String datasource = "AppData\\employees.s3db";
        SQLiteConnection conn = new SQLiteConnection();

        public MainWindow()
        {
            InitializeComponent();
            
            //連線SQLite資料庫檔案
            SQLiteConnectionStringBuilder connstr = new SQLiteConnectionStringBuilder();
            connstr.DataSource = datasource;

            conn.ConnectionString = connstr.ToString();
            conn.Open();

            //這裡列出表記錄
            DataTable data = ExecuteDataTable("SELECT * FROM employee",null);

            foreach (DataRow dr in data.Rows)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("ID=").Append(dr[0]);
                sb.Append(",Name=").Append(dr[1]);
                sb.Append(",Age=").Append(dr[2]);

                Debug.WriteLine(sb.ToString());
            }
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            //這裡演示如何插入一條新的記錄,如果要插入多條記錄需要使用“事務”機制來提高效率
            //你可以呼叫ExecuteNonQuery函式來簡化下面的程式碼
            using (SQLiteCommand cmd = (SQLiteCommand)conn.CreateCommand())
            {
                cmd.CommandText ="INSERT INTO employee(EMPLOYEE_NAME,EMPLOYEE_AGE)" +
                    " VALUES  (@NAME, @AGE)";
                cmd.Parameters.AddWithValue("@NAME", "InsertedName");
                cmd.Parameters.AddWithValue("@AGE", 99);
                cmd.ExecuteNonQuery();
            }
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            //這裡演示如何刪除一條記錄
            SQLiteParameter param = new SQLiteParameter("@ID", 1);
            ExecuteNonQuery("DELETE FROM EMPLOYEE WHERE 
[email protected]
", new SQLiteParameter[]{param}); } private void button3_Click(object sender, RoutedEventArgs e) { //這裡演示如何修改一條記錄,注意這裡沒有用字串替換功能 String sql = "UPDATE EMPLOYEE SET EMPLOYEE_AGE=22 where EMPLOYEE_ID=2"; ExecuteNonQuery(sql,null); } int ExecuteNonQuery(string sql, SQLiteParameter[] parameters) { int affectedRows = 0; 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; } 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; } } }

在Silverlight工程中的引用

 (待寫)

參考資料

[1]SQLite資料庫檔案管理工具

http://sqliteadmin.orbmu2k.de/

[2] System.Data.SQLite用於提供SQLite資料庫檔案訪問的第三方工具

http://sqlite.phxsoftware.com/

[3]《SQLite大量插入的效率問題》

[4]SQLite官網下載地址

相關推薦

C#SQLite常用操作

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

C#利用Dapper實現SQLite操作

前言 近幾天藉助C#對SQLite的學習,算是對資料庫剛入門吧,三天前寫了一篇C#利用System.Data.SQLite實現對SQLite的操作,其中方法是基於System.Data.SQLite.dll的程式包,後來在youtube和infoworld上看到利用Dapper程式包對資

C#利用System.Data.SQLite實現SQLite操作

SQLite介紹 SQLite是一個類似於Access的單機版資料庫管理系統,它將所有資料庫的定義(包括定義、表、索引和資料本身)都儲存在一個單一的檔案中。並且,SQLite是一個用C實現的類庫,它在記憶體消耗、檔案體積、簡單性方面都有不錯的表現,如果資料在10W條以下,查詢速度也是相當

C++list的常用操作

cat 創建 改變 end 插入 clu 末尾 ssi 頭文件 一、List定義: List是stl實現的雙向鏈表,與向量(vectors)相比, 它允許快速的插入和刪除,但是隨機訪問卻比較慢。使用時需要添加頭文件 #include <list> 二、L

c++檔案進行操作之建立特定的檔案結構

首先,介紹如何知道一個檔案是否存在。 //該函式可以判斷某個檔案或者資料夾相應的模式是否成立,如果成立則返回0,否則返回-1 #include<io.h> int _access(const char *path,int mode); mode可以取值為0(該檔案是否存在)、

c++檔案進行操作之遍歷雙層檔案結構

/*本程式碼實現遍歷雙層次層次的目錄結構*/ #include<stdio.h> #include<iostream> #include<io.h> #include<cstring> using namespace std; const ch

C#XML完整操作

C#對XML完整操作 http://zhidao.baidu.com/question/74181361.html <?xml version="1.0"?> <birthday> <NO1>    <type>型別<

Object 常用操作方法

opened const () open prot dog lap info code Object 構造方法 一、asign vs 擴展運算符 ... 1.共同點:都是淺拷貝 2.開發推薦 擴展運算符... let obj={ name: ‘Tom‘, ag

C# 列舉 Enum 常用操作

1.定義 public enum Musics{    音樂1 = 1,    音樂2 = 2,    音樂3 = 3,    音樂4 = 4,    音樂5, 音樂6, 音樂7, 音樂8=10

C# SQL 資料庫操作總結

C#對 SQL 資料庫操作總結                      &nbs

C#資料庫的操作(查詢,刪除,更新)

查詢: static IQueryable<Outlet> Query(string Region, string DC, string CustomerCode, string KA, string OutletCode, string NestleOutletCode

c#資料庫的操作程式碼(MySql.Data.dll包)

using System; using MySQLDriverCS; using System.Data; using MySql.Data.MySqlClient; namespace 實驗室資訊管理 {     class DBHelper     {        

c# 資料庫的操作

     【學習點點滴滴】自己也才學習c#  所以寫的都是寫簡單的。 就是為了記錄學習的點點滴滴;    所以寫得比較簡。    string id=textbox.text.tostring();    sqlconnection cnn = new sqlconne

Json——js和C#Json的操作

   JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,採用完全獨立於語言的文字格式。博主記得幾年前在華為外包專案中有一個和Android應用互動的需求,Android呼叫C#的Webservice的介面,就是通過Json這種格式來傳遞資料的。就是因為這種完全獨立於

C#與Sqlite資料庫操作例項

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

C# SQL 資料庫操作彙總(轉載自xiaoxiyou)

目錄 要對資料庫進行增刪查改操作,先要連線資料庫,然後通過 command 類中相應方法或 Dataset 資料集中相應方法來 完成對資料庫的有關操作 一、建立資料庫連線(SqlConnection 類) 步驟: 1

運用c# Word進行操作總結(一)建立Word文件

 在醫療管理系統中為儲存患者的體檢和治療記錄,方便以後的醫生或其他人檢視。當把資料儲存到資料庫中,需要新建很多的欄位,而且操作很繁瑣,於是想到網頁的資訊建立到一個word文字中,在顯示的時,可以線上開啟word,也可以把word轉換成html標籤顯示。 這樣使用

luasqlite資料庫操作封裝

DB = {} db_e = require "luasql.sqlite3" function open_db( ... ) -- body env = assert(db_e.

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

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

C#XML文件的各種操作方法

C# XML文件的各種操作方法 內容來自越康體育分享。 XML:Extensible Markup Language(可擴展標記語言)的縮寫,是用來定義其它語言的一種元語言,其前身是SGML(Standard Generalized Markup Language,標準通用標