前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WPF入门到放弃(完结篇)| sqlite以及数据复用(附总源码分享)

WPF入门到放弃(完结篇)| sqlite以及数据复用(附总源码分享)

作者头像
zls365
发布2021-09-02 15:43:51
2.7K0
发布2021-09-02 15:43:51
举报
文章被收录于专栏:CSharp编程大全

WPF也是我今年刚开始深入去了解,看了不少的学习视频和书籍,受剑神Python入门到放弃的启发,想把这段时间学习内容做个总结,一是因为我相信技术总是需要不断的总结与练习才能有所进步,二是希望帮助初学者对WPF有个初步的了解,大家一起探讨学习进步。

至此WPF从入门到放弃系列全部完毕,欢迎大家在剑指工控技术群里继续讨论、共同学习!来吧!一起学起来!

  1. WPF入门到放弃(一) | 安装与创建
  2. WPF入门到放弃(二) | 初识XAML
  3. WPF入门到放弃(三)| 制作串口调试助手
  4. WPF入门到放弃(四)| 给串口调试助手列表赋值(附调试软件)
  5. WPF入门到放弃(五)| 串口的读取与写入(程序&附串口调试精灵)
  6. WPF入门到放弃(六)| 画面优化与发布(附源程序)
  7. WPF入门到放弃(七)| 常用布局控件的用法
  8. WPF入门到放弃(八)| 常用的控件(二)
  9. WPF入门到放弃(九)| 读取excel数据并写入sqlite数据库中(附免安装连接数据库工具)

说明:

本文主要介绍WPF(Windows Presentation Foundation),是微软推出的一项基于windows操作系统、.NET平台的C/S客户端构建技术。

软件下载地址:

https://visualstudio.microsoft.com/zh-hans/vs/

这里使用的是Visual Studio 2019 社区版

第10讲

sqlite以及数据复用

本期主要实现将sqlite数据读取写入excel中以及将连接数据库语句进行封装以方便多次使用时的复用功能。

建立一个老师表做测试

插入三条数据以方便测试

设置读取按钮

  • 读取语句与之前写入数据库语句类似,需要将sql语句改为sql = "select * from Teacher";
  • 使用SQLiteDataAdapter函数来得到数据集。
  • 加入 using System.Data;名称空间 使用DataTable来保存数据集以方便写入数据库中。
  • DataTable dt = new DataTable();
  • sda.Fill(dt); 查询的数据集保存到dt中
  • 声明用到的对象以方便后续创建对象使用
  • IWorkbook workbook = null;
  • FileStream fs = null;
  • IRow row = null;
  • ISheet sheet = null;
  • ICell cell = null;
  • 防止程序出现异常我们用try { }catch {}中
代码语言:javascript
复制
if (dt != null && dt.Rows.Count > 0) //判断表是否有实际的数据
  {
  workbook =new XSSFWorkbook(); //创建xlsx的excel对象
  sheet= workbook.CreateSheet("teacher"); //创建teacher这个Sheet。
  int rowCount = dt.Rows.Count; //获取表中行数
  int columnCount = dt.Columns.Count; //获取表中列数
  row = sheet.CreateRow(0); 创建Sheet中的Row
创建Row中的列Cell并把字段名写入第一行中。
  for (int c = 0; c < columnCount; c++)
  {
  cell = row.CreateCell(c);         
  cell.SetCellValue(dt.Columns[c].ColumnName);
  }
  //将表中数据写入到excel中
   for (int i = 0; i < rowCount; i++)
  {
   row = sheet.CreateRow(i + 1);
   for (int j = 0; j < columnCount; j++)
{
       cell = row.CreateCell(j); 
       cell.SetCellValue(dt.Rows[i][j].ToString());
       listbox.Items.Add(dt.Rows[i][j].ToString());//将数据写到listbox中
       } 
}
用using可以及时释放资源 其中fs.Close();可以省略
    using (fs = File.OpenWrite(@"C:\Users\cyl\Desktop\teacher.xlsx"))//打开一个或者创建一个文件写入。
     {
      workbook.Write(fs);  //写入到excel中
fs.Close();          //可以省略
     }

点击读取SQlite按钮

下面我们封装一下sql语句

本次我们只封装插入数据和读取数据两种。

先添加一个SQliteHelper类,并用public static 修饰,这样使用时只需直接调用即可,无需实例化。

代码语言:javascript
复制
public static void ExecuteNonQuery(string connectionString, SQLiteCommand cmd)
//建一个查询的静态方法,参数是连接的字符串以及命令。
 {
            SQLiteConnection con = new SQLiteConnection(connectionString);
            con.Open();
            cmd = new SQLiteCommand(connectionString, con);
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch
            {
               
            }
            con.Close();
      }

其他是之前正常SQL的用法

使用时少量代码实现之前的功能。

类似的方法将读取数据集的方法封装成函数

代码语言:javascript
复制
public static DataTable ExecuteDataSet(string connectionString,string sql, SQLiteCommand cmd)
        {
            DataTable dt = new DataTable();
            SQLiteConnection con = new SQLiteConnection(connectionString);
            con.Open();
            cmd = new SQLiteCommand(connectionString, con);
            try
            {
                SQLiteDataAdapter sda = new SQLiteDataAdapter(sql, con); ;
                sda.Fill(dt);
                con.Close();
            }
            catch{ }  
            return dt;
        }

这样主函数的代码就减少了,同时多次使用更加的方便

多次点击读取SQlite数据重复

我们用listbox.Items.Clear(); 在读取数据之前先将之前的数据清掉。

多次点击正常了。

这期内容讲完了,程序是新手写法可能不太规范,也会有一些BUG,只是一种实现的参考,随着我们深入的学习,会避免这些BUG。通过这十期的内容,希望能帮助新手对WPF入门有个基本的认识,当然WPF还有很多东西还没涉及,比如数据绑定、绘图、动画等。目前我也还没掌握,就不继续分享了,江湖路远,有缘再见。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档