SQLite 数据库 C# Dapper 操作实例

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

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

查看所有标签

猜你喜欢:

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

Algorithms + Data Structures = Programs

Algorithms + Data Structures = Programs

Niklaus Wirth / Prentice Hall / 1975-11-11 / GBP 84.95

It might seem completely dated with all its examples written in the now outmoded Pascal programming language (well, unless you are one of those Delphi zealot trying to resist to the Java/.NET dominanc......一起来看看 《Algorithms + Data Structures = Programs》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具