s1机试补考补习 9206

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

datagridview演练

设置datagridView界面

绘制datagridView控件

找到控件

在这里插入图片描述

效果

在这里插入图片描述

明确需要填入的数据

从数据库中明确

在这里插入图片描述

我们需要三国表中的

姓名,攻击力,国家,这三列数据

给datagridview控件设置列

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
效果

在这里插入图片描述

设置dgv的样式

》让列铺满

在这里插入图片描述

效果

在这里插入图片描述

》去掉首列空列

在这里插入图片描述
在这里插入图片描述

》去掉自动添加的行

目的是去掉启动时的空行

在这里插入图片描述

只能用代码操作

在这里插入图片描述

效果

在这里插入图片描述

dgv展示数据

窗体加载的时候 通过一个函数来给控件绑定数据

为了让我们的代码更加灵活

还是写一个带参数的函数

在这里插入图片描述
优化sql语句

在这里插入图片描述
拿到语句

select name,attack,country from sanguo;

实现了绑定方法的调用

在这里插入图片描述

编写绑定方法的细节

在这里插入图片描述

》效果

在这里插入图片描述

关闭自动生成列

在这里插入图片描述

效果,自动生成的列就没有了

在这里插入图片描述

给dgv控件的列指明显示的数据

在这里插入图片描述

当所有的列都对应好了数据表中的列以后

结果如下

在这里插入图片描述

dgv搜索数据

搜索数据 界面准备

来一个搜索框

来一个按钮

在这里插入图片描述

搜索按钮的事件

在这里插入图片描述

连表查询

连表查询

连表查询格式

查出所有的列

select * from 表1 inner join 表2 on 表1.列名 =2.列名

筛出自己想要的列

select1.列名,1.列名n,2.列名,2.列名n from 表1 inner join 表2 on 表1.列名 =2.列名

筛出想要的列同时起别名

select1.列名 as 别名1,1.列名n as 别名,2.列名,2.列名n from 表1 inner join 表2 on 表1.列名 =2.列名

例子

select student.id,student.name as sname,teacher.name as tname from student inner join teacher on teacher.id = student.tid

查询结果

在这里插入图片描述

XMind - Trial Version

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鲸鱼编程pyhui

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

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

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

打赏作者

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

抵扣说明:

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

余额充值