JZGKCHINA
工控技术分享平台
尊重原创 勿抄袭
勿私放其他平台
说明:
本文主要介绍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还有很多东西还没涉及,比如数据绑定、绘图、动画等。目前我也还没掌握,就不继续分享了,江湖路远,有缘再见。
作者简介:
曹言林:加入工控七余载,从事过单片机编程、控制柜接线、设备维修,PLC编程、MES实施,目前主要做MES售前,对各方面虽不是专家级别,也愿为工控圈添砖加瓦,贡献自己的一份力量。