尊重原创 勿抄袭

勿私放其他平台

WPF入门到放弃(完结篇)| sqlite以及数据复用(附总源码分享)_数据WPF也是我今年刚开始深入去了解,看了不少的学习视频和书籍,受剑神Python入门到放弃的启发,想把这段时间学习内容做个总结,一是因为我相信技术总是需要不断的总结与练习才能有所进步,二是希望帮助初学者对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 社区版




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

第10讲


sqlite以及数据复用

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


建立一个老师表做测试

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


插入三条数据以方便测试

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


设置读取按钮

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

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


  • 读取语句与之前写入数据库语句类似,需要将sql语句改为sql = "select * from Teacher";
  • 使用SQLiteDataAdapter函数来得到数据集。
  • 加入  using System.Data;名称空间 使用DataTable来保存数据集以方便写入数据库中。
  • DataTable dt = new DataTable();
  • sda.Fill(dt);  查询的数据集保存到dt中

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


  • 声明用到的对象以方便后续创建对象使用。 
  • IWorkbook workbook = null;
  • FileStream fs = null;
  • IRow row = null;
  • ISheet sheet = null;
  • ICell cell = null;
  • 防止程序出现异常我们用try { }catch {}中

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

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按钮

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

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



下面我们封装一下sql语句

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

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

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

其他是之前正常SQL的用法

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();
}

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

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

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


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

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;
}

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


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

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

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

多次点击读取SQlite数据重复

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

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


多次点击正常了。

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

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

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