SQLite 数据库 C# Dapper 操作实例

栏目: ASP.NET · 发布时间: 5年前

内容简介:前面写过一篇文章《C# SQLite 数据库使用说明》,介绍的是 C# 语言用最原始的 ADO.net 方式操作 SQLite 数据库。可是这种方式很久没用过了,主要是因为 Dapper 和 PetaPoco 太好了用本文参照 DarkThread 的文章,整理了一套 C# 使用 Dapper 操作 SQLite 数据库的实例,方便自己日后查询。本程序依赖 Nuget 上三个包:System.Data.SQLite.Core(SQLite 包包含了EF完整依赖,这里不需要使用EF)、Dapper 和 New

1. 概述

前面写过一篇文章《C# SQLite 数据库使用说明》,介绍的是 C# 语言用最原始的 ADO.net 方式操作 SQLite 数据库。可是这种方式很久没用过了,主要是因为 Dapper 和 PetaPoco 太好了用

本文参照 DarkThread 的文章,整理了一套 C# 使用 Dapper 操作 SQLite 数据库的实例,方便自己日后查询。

2. 前置条件

本程序依赖 Nuget 上三个包:System.Data.SQLite.Core(SQLite 包包含了EF完整依赖,这里不需要使用EF)、Dapper 和 Newton.Json。

实例程序可以直接还原 Nuget 包:

SQLite 数据库 C# Dapper 操作实例

如需自己安装,可以参考如需图片:

SQLite 数据库 C# Dapper 操作实例

SQLite 数据库 C# Dapper 操作实例

SQLite 数据库 C# Dapper 操作实例

3. 程序说明

软件运行,先检查 SQLite 数据库文件是否存在。若不存在在建立 SQLiteConnection 时,SQLite 会自动创建。接着执行建表语句 CREATE TABLE 。

using Dapper;
using Newtonsoft.Json;
using System;
using System.Data.SQLite;
using System.IO;

namespace SQLiteDapper
{
    class Program
    {
        //数据库放在程序运行根目录
        static string dbPath = @".\Test.sqlite";
        static string connStr = "data source=" + dbPath;
        //测试数据
        static Player[] TestData = new Player[]
        {
            new Player("P01", "Jeffrey", DateTime.Now, 32767),
            new Player("P02", "Darkthread", DateTime.Now, 65535),
        };

        static void Main(string[] args)
        {
            //初始化数据库
            InitSQLiteDb();
            //测试插入
            TestInsert();
            //测试获取
            TestSelect();

            Console.Read();
        }

        #region 初始化数据库
        static void InitSQLiteDb()
        {
            //数据库存在则跳过
            if (File.Exists(dbPath))
            {
                return;
            }

            using (var conn = new SQLiteConnection(connStr))
            {
                conn.Execute(@"
                        CREATE TABLE Player (
                            Id VARCHAR(16),
                            Name VARCHAR(32),
                            RegDate DATETIME,
                            Score INTEGER,
                            BinData BLOB,
                            CONSTRAINT Player_PK PRIMARY KEY (Id)
                        )");
            }
        }
        #endregion

        #region 测试插入数据
        static void TestInsert()
        {
            using (var cn = new SQLiteConnection(connStr))
            {
                //清空旧数据防止插入失败
                cn.Execute("DELETE FROM Player");
                //参数 MSSQL 和 SQLite 使用 @paramName ,Oracle 使用 :paramName
                var insertScript = "INSERT INTO Player VALUES (@Id, @Name, @RegDate, @Score, @BinData)";
                cn.Execute(insertScript, TestData);
                //测试主键 Primary Key
                try
                {
                    //插入错误的信息
                    cn.Execute(insertScript, TestData[0]);
                    throw new ApplicationException("失败:未阻止主键重复");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"测试成功:{ex.Message}");
                }
            }
        }
        #endregion

        #region 测试获取数据
        static void TestSelect()
        {
            using (var cn = new SQLiteConnection(connStr))
            {
                var list = cn.Query("SELECT * FROM Player");
                Console.WriteLine(JsonConvert.SerializeObject(list, Newtonsoft.Json.Formatting.Indented));
            }
        } 
        #endregion
    }
}

源码下载

SQLiteDapper.zip


以上所述就是小编给大家介绍的《SQLite 数据库 C# Dapper 操作实例》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Elements of Information Theory

Elements of Information Theory

Thomas M. Cover、Joy A. Thomas / Wiley-Blackwell / 2006-7 / GBP 76.50

The latest edition of this classic is updated with new problem sets and material The Second Edition of this fundamental textbook maintains the book's tradition of clear, thought-provoking instr......一起来看看 《Elements of Information Theory》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试