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