C#連接SQLite數據庫


C#連接SQLite其實和連接MSSQL基本是一樣的。但是連接SQLite需要下載一個DLL文件。鏈接:http://pan.baidu.com/s/1hr5Goio 密碼:rqyi

下載這個DLL文件后,引入並引用(這個就不需要我教如何引入和引用了吧?不懂就百度~)

接下來,我們編輯配置文件。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <!--填入數據庫文件的路徑即可,這里我們放在debug目錄下,所有只需要直接寫入文件名dbdemos.db3-->
    <add name="SQLiteDB" connectionString="Data Source=dbdemos.db3"/>
  </connectionStrings>
</configuration>

然后我們來編寫一個SQLiteHelper的類。這個類封裝了增刪查改的方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.IO;
using System.Data.SQLite;

namespace WindowsFormsApplication1
{
    public static class SQLiteHelper
    {
        //需要添加引用--框架,System.Configuration,添加再using,用來讀取配置文件的數據庫鏈接字符串
        private static string conStr = ConfigurationManager.ConnectionStrings["SQLiteDB"].ConnectionString;
        // private static readonly string conStr = ConfigurationManager.ConnectionStrings["mssql"].ConnectionString;
        /// <summary>
        /// 封裝增加、刪、改方法,方法名可以隨便寫,但是為了方便查看,用了和SqlCommand類一一樣的方法名
        /// </summary>
        /// <param name="sql">SQL語句</param>
        /// <param name="pms">SQL參數,因為不知道會有多少個參數,所以用可變參數params</param>
        /// <returns>受影響的行數</returns>
        public static int ExecuteNonQuery(string sql, params SQLiteParameter[] pms)
        {
            using (SQLiteConnection conn = new SQLiteConnection(conStr))
            {
                using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
                {
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    try
                    {
                        conn.Open();
                    }
                    catch
                    {
                        throw;
                    }


                    return cmd.ExecuteNonQuery();
                }
            }




        }

        /// <summary>
        /// 查詢單個結果,一般和聚合函數 一起使用
        /// </summary>
        /// <param name="sql">查詢的SQL語句</param>
        /// <param name="pms">SQL參數</param>
        /// <returns>返回查詢對象,查詢結果第一行第一列</returns>
        public static object ExecuteScalar(string sql, params SQLiteParameter[] pms)
        {

            using (SQLiteConnection conn = new SQLiteConnection(conStr))
            {
                using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
                {
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    try
                    {
                        conn.Open();
                    }
                    catch
                    {
                        throw;
                    }


                    return cmd.ExecuteScalar();
                }
            }

        }

        /// <summary>
        /// 查詢多行
        /// </summary>
        /// <param name="sql">SQL語句</param>
        /// <param name="pms">SQL參數</param>
        /// <returns>返回SqlDataReader對象</returns>
        public static SQLiteDataReader ExcuteReader(string sql, params SQLiteParameter[] pms)
        {

            //這里不能用using,不然在返回SqlDataReader時候會報錯,因為返回時候已經在using中關閉了。
            //事實上,在使用數據庫相關類中,SqlConnection是必須關閉的,但是其他可以選擇關閉,因為CG回自動回收
            SQLiteConnection conn = new SQLiteConnection(conStr);
            using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
            {
                if (pms != null)
                {
                    cmd.Parameters.AddRange(pms);
                }
                try
                {
                    conn.Open();
                    //傳入System.Data.CommandBehavior.CloseConnection枚舉是為了讓在外面使用完畢SqlDataReader后,只要關閉了SqlDataReader就會關閉對應的SqlConnection
                    return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                }
                catch
                {
                    conn.Close();
                    conn.Dispose();
                    throw;
                }
            }
        }
    }
}

然后就可以通過這個類來對SQLite數據庫經常操作了。具體如何使用,也是很簡單的,例如,

        private void button4_Click(object sender, EventArgs e)
        {
            SQLiteDataReader sdr = SQLiteHelper.ExcuteReader("select * from animals");
            List<animals> list = new List<animals>();
            if (sdr.HasRows) {
                while (sdr.Read()) {
                    animals a = new animals();
                    a.NAME = sdr[0].ToString();
                    a.SIZE = sdr[1].ToString();
                    a.WEIGHT = sdr[2].ToString();
                    a.AREA = sdr[3].ToString();
                    a.BMP = sdr[4].ToString();
                    list.Add(a);
                }
            }
            this.dataGridView1.DataSource = list;
        }

其實,不管是什么數據庫,用法基本上是一樣的。這里可以看一下筆者以前寫過的C#鏈接MSSQL。我們可以看到,基本就是把i前綴SQL換成SQLite  

C#封裝CRUD到SqlHelper類解讀


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM