当前位置:

首页 > 软件教程 > 40分钟掌握SQLite数据展示与导出技巧

40分钟掌握SQLite数据展示与导出技巧

曾经突发奇想,将已淘汰的安卓手机赋予新生,开发了一个适用于弱网络环境的智能就餐登记安卓程序。饭堂使用了几天后,效果不错,但发现登记数据难以导出和统计。于是在周六早上,我迅速开发了一个简单的Windows程序,没想到如此快就完成了,现在与大家分享一下这个过程。首先,我使用的是SQLite数据库,程序只需直接连接SQLite即可。要实现直接连接,可以引用SQLite的组件【https://github.com/praeclarum/sqlite-net】。下面是代码示例:publicclassMyConn

本文目录

    曾经突发奇想,将已淘汰的安卓手机赋予新生,开发了一个适用于弱网络环境的智能就餐登记安卓程序。饭堂使用了几天后,效果不错,但发现登记数据难以导出和统计。于是在周六早上,我迅速开发了一个简单的Windows程序,没想到如此快就完成了,现在与大家分享一下这个过程。

    首先,我使用的是SQLite数据库,程序只需直接连接SQLite即可。要实现直接连接,可以引用SQLite的组件【https://github.com/praeclarum/sqlite-net】。下面是代码示例:

    public class MyConnDB : SQLiteConnection
    {
        public TableQuery Card_log { get { return this.Table(); } }
        public TableQuery Card_no { get { return this.Table(); } }
        public MyConnDB(string dbPath) : base(dbPath)
        {
            // CreateTable(); // 创建数据表
        }
    }

    连接到数据库后,展示数据就变得简单了。由于需要关联两张表并进行统计,代码如下:

    dbPath = $"{Environment.CurrentDirectory}\\DB.db"; // 引用SQLite的数据文件
    using (var db = new MyConnDB(dbPath))
    {
        var Card_no = db.Card_no.ToList();
        var Card_log = db.Card_log.ToList();
        var Card_totle = db.Card_log.GroupBy(p => p.IDCardNo)
            .Select(group => new { IDCardNo = group.Key, Count = group.Count() })
            .ToList();
        var result = from c in Card_log
                     join p in Card_no on c.IDCardNo equals p.IDCardNo
                     join t in Card_totle on c.IDCardNo equals t.IDCardNo
                     select new { 卡号 = c.IDCardNo, 姓名 = p.UName, 刷卡日期 = c.Itime, 累计刷卡数 = t.Count, 记录时间 = c.VCreatedTime };
        this.label1.Text = $"{DateTime.Now.ToLongDateString()}, 查到{Card_log.Count}条记录";
        this.dataGridView1.DataSource = result.ToList();
    }

    数据成功显示在dataGridView中,接下来我们需要实现数据导出到Excel的功能。原本打算使用之前介绍的EPPlus【EPPlus秘籍之Excel导出之图表导出】,但考虑到这是Winform程序,用户可能已经安装了OFFICE,所以直接从网上找了一个导出代码,测试通过后就采用了:

    /// 
    /// 导出Excel
    /// 
    /// 文件路径
    /// 控件DataGridView
    private void ExportExcels(string fileName, DataGridView myDGV)
    {
        string saveFileName = "";
        SaveFileDialog saveDialog = new SaveFileDialog();
        saveDialog.DefaultExt = "xls";
        saveDialog.Filter = "Excel文件|*.xls";
        saveDialog.FileName = fileName;
        saveDialog.ShowDialog();
        saveFileName = saveDialog.FileName;
        if (saveFileName.IndexOf(":") < 0) return; // 被点了取消
        Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
        if (xlApp == null)
        {
            MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
            return;
        }
        Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
        Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
        Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
        //写入标题
        for (int i = 0; i < myDGV.ColumnCount; i++)
        {
            worksheet.Cells[1, i + 1] = myDGV.Columns[i].HeaderText;
        }
        //写入数值
        for (int r = 0; r < myDGV.Rows.Count; r++)
        {
            for (int i = 0; i < myDGV.ColumnCount; i++)
            {
                worksheet.Cells[r + 2, i + 1] = myDGV.Rows[r].Cells[i].Value;
            }
            System.Windows.Forms.Application.DoEvents();
        }
        worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
        if (saveFileName != "")
        {
            try
            {
                workbook.Saved = true;
                workbook.SaveCopyAs(saveFileName);
            }
            catch (Exception ex)
            {
                MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
            }
        }
        xlApp.Quit();
        GC.Collect();//强行销毁 
        MessageBox.Show("文件已导出成功", "提示", MessageBoxButtons.OK);
    }

    这样,SQLite数据的展示和导出功能就完成了。最后,再分享一个dataGridView自动添加序号的功能:

    private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
    {
        this.dataGridView1.TopLeftHeaderCell.Value = "序号";
        Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, this.dataGridView1.RowHeadersWidth - 4, e.RowBounds.Height);
        TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
            this.dataGridView1.RowHeadersDefaultCellStyle.Font,
            rectangle,
            this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor,
            TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
    }

    就这样完成了整个开发过程。下面是界面图,刚好花了40分钟。

    极速40分钟写出SQLite数据展示与导出功能【技术创作101训练营】

    界面比较简单-完-

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    软件教程 sqlite
    相关文章 更多
    sqlite创建数据库指令怎么写?命令格式与操作步骤
    sqlite创建数据库指令怎么写?命令格式与操作步骤

    讲解SQLite创建数据库的具体命令格式与操作步骤,涵盖命令行隐式创建、ATTACH显式挂载及内存数据库等特殊场景,解析文件生成机制与常见误区。

    windows php sqlite,Sqlite Win下PHP支持php_sqlite.dll
    windows php sqlite,Sqlite Win下PHP支持php_sqlite.dll

    SQLite是嵌入式、基于文件的数据库,无需独立服务器进程。PHP5原生支持,但Windows下5.1.1、5.1.2及5.1.6这三个版本需同时启用php_pdo.dll、php_pdo_sqlite.dll和php_sqlite.dll才能正常运行。

    Python操作SQLite数据库的实用场景
    Python操作SQLite数据库的实用场景

    Python操作SQLite数据库通过文件实现无需服务器,步骤为:1.导入sqlite3模块;2.连接或创建数据库文件;3.使用SQL语句创建表;4.插入数据并提交事务;5.查询数据并输出结果;6.关闭连接。数据类型包括TEXT、INTEGER、REAL、BLOB和NULL,分别适用于字符串、整数、浮点数、二进制数据和空值,选择合适类型可提升一致性与性能。若数据库损坏,可通过复制文件备份或使用sqlite3命令行工具恢复,也可启用WAL模式增强可靠性。事务处理需用try-except-finally结构确

    Python连接SQLite数据库教程
    Python连接SQLite数据库教程

    在Python中连接SQLite数据库需要使用sqlite3模块。具体步骤包括:1)导入sqlite3模块并连接数据库;2)创建游标对象;3)创建表;4)提交事务并关闭连接。使用SQLite时需注意事务管理和并发访问问题,批量操作可提高效率。

    C++操作SQLite数据库教程
    C++操作SQLite数据库教程

    要在C++中操作SQLite数据库,需使用SQLite的CAPI并通过封装简化操作。1.包含头文件sqlite3.h并建立数据库连接,通过sqlite3_open()函数打开或创建数据库;2.使用sqlite3_exec()执行SQL语句以完成表的创建等操作;3.对于查询,使用sqlite3_prepare_v2()、sqlite3_step()和sqlite3_finalize()逐行获取结果;4.使用sqlite3_close()关闭数据库连接;5.为防止SQL注入,应使用参数化查询和sqlite3_

    php如何使用PHP的PDO_SQLITE扩展?
    php如何使用PHP的PDO_SQLITE扩展?

    在Web开发中,PHP是一种非常常用的编程语言。而作为一种高效的数据库操作类库,PDO_SQLITE扩展也是PHP中的重要组成部分。本文将介绍如何在PHP中使用PDO_SQLITE扩展。第一步:PDO_SQLITE的安装在使用PDO_SQLITE之前,首先需要确认它是否已经安装在您的PHP环境中。可以通过执行如下命令进行检查:php-m|greppd

    如何在PHP中使用SQLite函数
    如何在PHP中使用SQLite函数

    随着互联网技术的日益发展,越来越多的网站和应用程序需要进行数据存储和管理。在这方面,关系型数据库是非常重要的工具,可以帮助开发者将数据按照固定的格式存储和管理。目前,主流的关系型数据库有MySQL、Oracle、SQLServer、PostgreSQL等。不过,对于一些轻量级的应用程序来说,使用像MySQL等数据库有些过重,这时候就需要使用更为轻便的数据库

    PHP Fatal error: Class ‘SQLiteDatabase’ not found的解决方法
    PHP Fatal error: Class ‘SQLiteDatabase’ not found的解决方法

    当我们在使用PHP开发时,有时会遇到一个错误信息:PHPFatalerror:Class‘SQLiteDatabase’notfound。这个错误出现的原因是因为PHP默认没有启用SQLite扩展。那么,如果我们想要使用PHP开发时使用SQLite数据库,该如何解决这个错误呢?接下来,本文将会为大家介绍几种不同的解决方法,让大

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。