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 操作实例》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

从莎草纸到互联网:社交媒体2000年

从莎草纸到互联网:社交媒体2000年

[英]汤姆·斯丹迪奇 / 林华 / 中信出版社 / 2015-12 / 58.00元

【内容简介】 社交媒体其实并不是什么新鲜的东西。从西塞罗和其他古罗马政治家用来交换信息的莎草纸信,到宗教改革、美国革命、法国大革命期间印制的宣传小册子,过去人类跟同伴交流信息的方式依然影响着现代社会。在报纸、广播和电视在散播信息上面统治了几十年后,互联网的出现使社交媒体重新变成人们与朋友分享信息的有力工具,并推动公共讨论走向一个新的模式。 汤姆•斯丹迪奇在书中提醒我们历史上的社交网络其......一起来看看 《从莎草纸到互联网:社交媒体2000年》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码