WPF也是我今年刚开始深入去了解,看了不少的学习视频和书籍,受剑神Python入门到放弃的启发,想把这段时间学习内容做个总结,一是因为我相信技术总是需要不断的总结与练习才能有所进步,二是希望帮助初学者对WPF有个初步的了解,大家一起探讨学习进步。
至此WPF从入门到放弃系列全部完毕,欢迎大家在剑指工控技术群里继续讨论、共同学习!来吧!一起学起来!
- WPF入门到放弃(一) | 安装与创建
- WPF入门到放弃(二) | 初识XAML
- WPF入门到放弃(三)| 制作串口调试助手
- WPF入门到放弃(四)| 给串口调试助手列表赋值(附调试软件)
- WPF入门到放弃(五)| 串口的读取与写入(程序&附串口调试精灵)
- WPF入门到放弃(六)| 画面优化与发布(附源程序)
- WPF入门到放弃(七)| 常用布局控件的用法
- WPF入门到放弃(八)| 常用的控件(二)
- 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 {}中
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还有很多东西还没涉及,比如数据绑定、绘图、动画等。目前我也还没掌握,就不继续分享了,江湖路远,有缘再见。