s1补考机试 笔记 9206

本文介绍了一个使用C#和SQL Server实现ListView数据加载的实战案例,包括数据库连接、数据查询及展示等关键步骤,并解决了搜索功能中的常见问题。

s1补考机试

listview演练

数据表情况

登陆数据库

在这里插入图片描述
服务器名称

.

目标数据库

在这里插入图片描述

数据表情况在这里插入图片描述

绘制listview控件

新建窗体应用

在这里插入图片描述

绘制listview控件

在这里插入图片描述

设置lv显示模式为详情模式

在这里插入图片描述
设置显示模式

设置lv控件的列

假设只显示三个列

姓名,国家,攻击力

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

当前界面

在这里插入图片描述

配置DbHelper

引入dbHelper工具文件

下载地址

https://cloud.189.cn/t/r636ziI7Fzym(访问码:i093)

在这里插入图片描述

把文件粘贴进来

修改dbHelper的命名空间

在这里插入图片描述

namespace 控件填入数据的演练

在这里插入图片描述
至此为止,DbHelper的命名空间准备就完毕了

DbHelper连接字符串的配置

连接哪个数据库,就获取哪个的连接字符串在这里插入图片描述

连接成功的状态

在这里插入图片描述
有小电源

获取连接字符串

在这里插入图片描述

选中目标数据库,右下脚找连接字符串

复制它

Data Source=.;Initial Catalog=dbok;Integrated Security=True

把它粘在DbHelper 的对应位置

在这里插入图片描述

查询显示所有数据

双击窗体进入加载事件

在这里插入图片描述

在这里编写加载方法

为了让方法的通用性更强

写一个带参方法

参数是sql语句

先验证sql语句

在这里插入图片描述

带走sql语句

在这里插入图片描述
继续写方法

先写一个方法的调用

再写方法的定义

在这里插入图片描述

再来定义这个方法

在这里插入图片描述

完善加载方法 先明确编写的逻辑

在这里插入图片描述

获取帮手

在这里插入图片描述

拿一个数据朗读者

导入命名空间

在这里插入图片描述

在这里插入图片描述

遍历数据郎读者 获取需要的数据

当前的sql语句的查询结果是这个样子的

在这里插入图片描述

需要哪一列数据,就提供列名称来获取即可

在这里插入图片描述

有一条数据就要创建一个lv的行出来

操作逻辑

在这里插入图片描述

效果

在这里插入图片描述

代码

在这里插入图片描述

效果

在这里插入图片描述

代码

在这里插入图片描述

效果

在这里插入图片描述
代码

在这里插入图片描述

只要我们准备的列够多

有几个子项就可以添加几个子项

小结

》步骤一

在这里插入图片描述

》步骤二

    // 加载数据到lv中
    private void loadToLv(String sql) { 
     
      // 获取帮手
      DbHelper helper = new DbHelper();

      // 帮手帮助我们拿一个数据朗读者
      SqlDataReader reader = helper.getReader(sql);

      // 数据朗读者一个一个的提供数据
      while (reader.Read()) { 
        // 提取需要的数据
        // 通过  朗读者[列名称] 可以获取数据的
        // 姓名
        String name = reader["name"].ToString();
        // 国家
        String country = reader["country"].ToString();
        // 攻击力
        String attack = reader["attack"].ToString();
         
        // 每提供一个数据,我们就要给lv添加一行
        // 新建一个项
        ListViewItem item = new ListViewItem(name);
        // 给项添加子项
        item.SubItems.Add(country);
        item.SubItems.Add(attack);
        // 把项添加到lv控件中( lv控件.项集合.Add(项对象) )
        listView1.Items.Add(item);


      }

    }

》最终结果

在这里插入图片描述

搜索数据

准备界面

来一个文本框

来一个按钮

在这里插入图片描述

搜索的逻辑

在这里插入图片描述

获取搜索关键词

在这里插入图片描述

构建sql语句

在sqlserver软件中先明确好可用的sql语句

在这里插入图片描述

把sql语句贴到代码中

在这里插入图片描述

把sql语句改活

在这里插入图片描述

利用sql语句重新查询并绑定数据

在这里插入图片描述
loadToLv这个方法是我们前一个步骤自己写的方法

这个不是系统方法

测试效果

在这里插入图片描述
存在bug的

bug原因分析

我们一直在做加法

解决办法

如果查询到了结果

要往控件中填入的话

先清空一下lv控件

然后再填

解决代码

在这里插入图片描述

找到填入数据的方法

在遍历填入数据的操作前

先清空listview的全部数据

再测试一下

在这里插入图片描述
正常的搜索是会有数据的

不过

在这里插入图片描述

当搜索词是一串空格时,没有结果了

这样不太好

我们应该去空格,再查询

解决bug

期望的效果

在这里插入图片描述

在这里插入图片描述

完整代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace 控件填入数据的演练
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      // 查询所有数据的sql语句
      String sql = "select * from sanguo";
      // 加载数据到lv中
      loadToLv(sql);
    }

    // 加载数据到lv中
    private void loadToLv(String sql) { 
     
      // 获取帮手
      DbHelper helper = new DbHelper();

      // 帮手帮助我们拿一个数据朗读者
      SqlDataReader reader = helper.getReader(sql);

      // 数据朗读者一个一个的提供数据
      // 先清空再填入
      listView1.Items.Clear();
      while (reader.Read()) { 
        // 提取需要的数据
        // 通过  朗读者[列名称] 可以获取数据的
        // 姓名
        String name = reader["name"].ToString();
        // 国家
        String country = reader["country"].ToString();
        // 攻击力
        String attack = reader["attack"].ToString();
         
        // 每提供一个数据,我们就要给lv添加一行
        // 新建一个项
        ListViewItem item = new ListViewItem(name);
        // 给项添加子项
        item.SubItems.Add(country);
        item.SubItems.Add(attack);
        // 把项添加到lv控件中( lv控件.项集合.Add(项对象) )
        listView1.Items.Add(item);


      }

    }

    private void button1_Click(object sender, EventArgs e)
    {
      // 拿到搜索关键词,去空格
      String key = textBox1.Text.Trim();

      // 利用关键词构建sql搜索语句
      // select * from sanguo where name like '%张%'

      String temp = "select * from sanguo where name like '%{0}%'";
      String sql = String.Format(temp, key);

      // 利用sql语句绑定数据给控件
      loadToLv(sql);
    }
  }
}

XMind - Trial Version

内容概要:本文围绕基于三电平ANPC构网型逆变器的虚拟同步控制策略展开研究,重点探讨了其在Simulink环境下的仿真实现方法。研究聚焦于虚拟同步发电(VSG)控制、双闭环控制及中点电位平衡控制等核心技术,旨在提升高渗透率新能源背景下逆变器的惯量支撑能力和电能质量。通过构建详细的系统模型,提出并优化控制策略,有效解决了三电平逆变器在动态响应、稳定性及中点电压波动等方面的挑战,增强了系统对复杂电网工况的适应能力。研究进一步结合VSG的虚拟惯量与阻尼特性,实现对电网频率波动的有效抑制,并通过双闭环结构提升电流跟踪精度与功率调节性能,同时引入中点电位平衡控制策略,确保多电平拓扑输出电压对称性与可靠性。; 适合人群:具备电力电子、自动控制或新能源发电相关背景,从事科研或工程开发的研发人员,尤其是关注构网型逆变器、虚拟同步技术及多电平拓扑控制的研究生与工程师。; 使用场景及目标:①应用于新能源并网系统中构网型逆变器的设计与仿真;②为提升电力系统稳定性提供虚拟同步控制方案;③实现三电平ANPC逆变器中点电位的有效平衡与动态性能优化; 阅读建议:建议结合Simulink仿真模型进行实践操作,重点关注控制策略的实现细节与参数整定过程,同时可参考文中提到的双闭环结构与VSG控制逻辑进行扩展研究。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值