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

2021-09-02 15:43:51 浏览数 (1)

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:UserscylDesktopteacher.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还有很多东西还没涉及,比如数据绑定、绘图、动画等。目前我也还没掌握,就不继续分享了,江湖路远,有缘再见。

0 人点赞