【WinForm】使用SQLite数据库创建本地数据库操作文件实现方案详解

本文介绍了如何在WinForm项目中安装并使用SQLite.NET连接本地数据库,包括解决DLL缺失、编译配置问题,以及创建数据表、操作数据和查看数据的方法。
摘要由CSDN通过智能技术生成

在做编程开发的工作中,创建一个项目WinForm桌面程序,要实现OA系统(自动化办公)类似的程序功能,就要用到的数据库,不用服务器上的,那怎样实现本地管理数据库操作数据处理呢,这里讲一讲怎样使用数据库文件操作,可以移植和备份。

这里使用Visual Studio开发工具,开发WinForm桌面程序项目,在用到本地数据库的时候

安装sqlite-net

选择从NuGet搜索安装包,一个叫sqlite-net程序包,1.0.8版本,安装好,
在这里插入图片描述

注意版本:1.0.8,如果是最新版编译可能会报错,则是项目使用Net框架不是最新引起的

安装后,会看到项目目录下多出了两个文件,如下

  • SQLite.cs
  • SQLiteAsync.cs
  • sqlite3.dll

报错1:无法加载 DLL“sqlite3”: 找不到指定的模块。

这个是缺少的文件sqlite3.dll,需要自己去SQLite官网找,导入到项目文件夹中,将其文件属性设置为复制即可

怎么找文件,如果是Windows系统,那就选:

32位机的sqlite-dll-win-x86-3440200.zip
或者64位机的sqlite-dll-win-x64-3440200.zip

报错2:试图加载格式不正确的程序。

这里是编译目标配置不正确引起的,双击项目属性Properties,生成,目标平台,这里选择对应的x86x64即可

连接本地数据库

写一个操作工具类SQLiteTool ,代码如下

public class SQLiteTool : IDisposable
{
    public readonly SQLiteConnection connect;

    public SQLiteTool(string fileName="data.db")
    {
        var filePath = Path.Combine(Application.StartupPath, fileName);
        connect = new SQLiteConnection(filePath);
    }

    public void Dispose()
    {
        connect.Dispose();
    }
}

传入的参数fileName就是指向本地的数据库文件

使用模板

再写一个模型类Model,用于操作数据库,代码如下

public class Model<T> where T : new()
{
    private readonly string tableName;

    [PrimaryKey, AutoIncrement]
    public int _id { set; get; }

    public DateTime create_date { set; get; }

    public DateTime update_date { set; get; }

    public Model()
    {
        tableName = typeof(T).Name;//.ToLower();//创建的表名对大小写不敏感
        create_date = DateTime.Now;
        update_date = DateTime.Now;
    }

    public static T createModel(SQLiteConnection connect)
    {
        var model = new T();
        var count = connect.CreateTable<T>();
        //if (count > 0) {
        //...
        //}
        return model;
    }

    public T queryInfo(SQLiteConnection connect, int id)
    {
        var list = connect.Query<T>($"select * from {tableName} where _id =? limit 1", id);
        return list.FirstOrDefault<T>();
    }

    public List<T> queryList(SQLiteConnection connect, int maxCount =500)
    {
        return connect.Query<T>($"select * from {tableName} limit ?", maxCount);
    }

    public bool deleteInfo(SQLiteConnection connect, int id)
    {
        var count = connect.Delete<T>(id);
        return count > 0;
    }

    public bool insertInfo(SQLiteConnection connect, T info)
    {
        //info.update_date = DateTime.Now;
        var count = connect.Insert(info);
        return count > 0;
    }

    public bool updateInfo(SQLiteConnection connect, T info)
    {
        var count = connect.Update(info);
        return count > 0;
    }
	//...
}

若提示⚠ T 公共无参数构造函数类型…需要在类名后面添加 <T> where T : new()
写这个类有怎么用呢,可以理解为模板吧

建立数据表

例如,要建立一个数据表,就写一个继承Model的对象类,假设一个对象类名是TestModel,代码如下

public class TestModel : Model<TestModel>
{
    public string name { set; get; }
	//...
}

因为有继承了Model类,所以这里不需要再写继承Model的可访问属性,例如_id…,省了不少代码

操作数据表

一个使用的例子,代码如下

using (var db = new SQLiteTool()) {
	var test = SQLiteTool.Model<SQLiteTool.TestModel>.createModel(db.connect);
	var players = test.queryList(db.connect);
	test.insertInfo(db.connect, new SQLiteTool.TestModel() { name="player"+(players.Count + 1) });
	//...
}

查看数据表

要查看数据,可以借助工具Navicat软件没有的话,自己安装,创建新连接SQLite…,选现有的数据库文件,连接成功,确认即可看到。

写到最后,不再多讲,知道怎么用了吗,还不会的就试试上手 (ง •_•)ง

请添加图片描述

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TA远方

谢谢!收到你的爱╮(╯▽╰)╭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值