C#学习笔记(5)——大项目查找
说明(2017-5-27 16:34:39):
1. 注意事项:
(0)设计窗体,添加一个dgv,添加5个列名,修改名字和绑定数据。


(1)添加引用,system.data.sqlclient
(2)新建student类,添加id,name,chinese,math,flag字段
(3)窗体代码:loadStudent(0)调用方法,加载学生信息,参数为0,就是flag的值,0未删,1删除
(4)新建loadStudent方法,传一个参数p。
(5)数据库操作:连接字符串,using三个方法(sqlconnection,sqlcommand,sqldatareader),在sqldatareader里,实例化一个student类st,每读取一行数据,存入st,外面新建一个list集合,类型是student,把每个st存入list集合。
(6)dgv(datagridview缩写),dgv.datasource=list,把list绑定到dgv表格中。
(7)还有一些其他禁止自动生成列,禁止默认选中,点击选中一行一些破事,无关紧要,主要是上面的,将数据库数据显示出来。
2. 运行结果:

数据库:
myclass

代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; namespace _08餐桌大项目
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 学生类
/// </summary>
public class Student
{
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private string _chinese;
public string Chinese
{
get { return _chinese; }
set { _chinese = value; }
}
private string _math;
public string Math
{
get { return _math; }
set { _math = value; }
}
private int _flag;
public int Flag
{
get { return _flag; }
set { _flag = value; }
}
}
/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
loadStudent();
}
/// <summary>
/// 加载学生信息
/// </summary>
/// <param name="p">flag=0未删除,flag=1删除</param>
private void loadStudent(int p)
{
//集合,把reader到的数据添加到student各字段
List<Student> list = new List<Student>();
string str = "Data Source=.; Initial Catalog=jjwdb; Integrated Security=True";
using (SqlConnection con = new SqlConnection(str))
{
con.Open();
string sql = "select id,name,chinese,math,flag from myclass where flag=" + p;
//string sql = "insert into myclass(name,chinese,math) values('zhao','77','77')";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
//Console.WriteLine(123);
while (reader.Read())
{
Student st = new Student();
st.Id = Convert.ToInt32(reader["id"]);
st.Name = Convert.ToString(reader["name"]);
st.Chinese = Convert.ToString(reader["chinese"]);
st.Math = Convert.ToString(reader["math"]);
st.Flag = Convert.ToInt32(reader["flag"]);
list.Add(st);
}
}
}
} }
dgv.AutoGenerateColumns = false;//禁止自动生成列
dgv.DataSource = list;//绑定数据
dgv.SelectedRows[].Selected = false;//禁止被选中,这一行代码要放在绑定数据后面,不然会报错!;属性里selection mode改为full row select,一次选一行
}
}
}
C#学习笔记(5)——大项目查找的更多相关文章
- Scrapy:学习笔记(2)——Scrapy项目
Scrapy:学习笔记(2)——Scrapy项目 1.创建项目 创建一个Scrapy项目,并将其命名为“demo” scrapy startproject demo cd demo 稍等片刻后,Scr ...
- golang学习笔记6 beego项目路由设置
golang学习笔记5 beego项目路由设置 前面我们已经创建了 beego 项目,而且我们也看到它已经运行起来了,那么是如何运行起来的呢?让我们从入口文件先分析起来吧: package main ...
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver
1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...
- IDEA 学习笔记之 Java项目开发深入学习(2)
Java项目开发深入学习(2): 查找变量被用到的地方 编译当前文件 增加变量watch 注意:我使用了keymap (eclipse模板),所以很多快捷键和eclipse一样. F5单步调试进入函数 ...
- 学习笔记:flutter项目搭建(mac版)
什么是flutter Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的 ...
- 算法图解学习笔记01:二分查找&大O表示法
二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[ ...
- koa2学习笔记01 - 创建项目 —— koa生成器一键生成koa项目
前言 从17年开始尝试学习搭建个人网站开始,就开始学习摸索node了,至今差不多快两年了. 说起来现在都9102年了,所以最近打算整体设计重构一下网站,索性node后台也重写一遍. 重温一下node, ...
- Android Studio安卓学习笔记(二)Android项目结构
上一篇代码,我们学习了Android的功能以及如何用Android Studio开发第一个安卓程序.下面就要介绍Android项目结构.为日后学习打基础. 一:Android项目结构 打开MyFris ...
- 【学习笔记】大数据技术原理与应用(MOOC视频、厦门大学林子雨)
1 大数据概述 大数据特性:4v volume velocity variety value 即大量化.快速化.多样化.价值密度低 数据量大:大数据摩尔定律 快速化:从数据的生成到消耗,时间窗口小,可 ...
随机推荐
- CreateThread与_beginthreadex本质区别
函数功能:创建线程 函数原型: HANDLEWINAPICreateThread( LPSECURITY_ATTRIBUTESlpThreadAttributes, SIZE_TdwStackSize ...
- 1 时间戳 2 C# 如何生成一个时间戳 3 js 时间加一分钟... 4 js string->date 5 js 取得当天0点 / 23:59:59 时间
var str = 'Jan 23, 2019 10:25:47 AM';var strnow = new Date(str); 时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经 ...
- mysql使用GROUP BY分组实现取前N条记录的方法
MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道 ...
- Android 关于导航栏(虚拟按键)遮挡PopupWindow底部布局的问题
我们自定义popupWindow的时候,一般会设置这些参数 setContentView(contentView); //设置高度为屏幕高度 setWidth(UIUtils.getScreenHei ...
- python类内init外声明的属性与init内声明的对象属性的访问和操作区别
python类内init外声明的属性与init内声明的对象属性的访问和操作区别(面试题) 1.在ipython中输入以下代码,其输出会是什么? In [1]: class ClassOut: ...: ...
- shell脚本监控Linux系统的登录情况
一.登录日志记录 vi /etc/profile 在最后面添加一行: echo "`who`" > /var/log/login.log 二.监控日志文件 #!/bin/ba ...
- 温故而知新 Vue 原来也有this.$forceUpdate();
由于一些嵌套特别深的数据,导致数据更新了.UI没有更新(连深度监听都没有监听到),我捉摸着有没有和react一样的立即更新UI的API呢 this.forceUpdate()呢?结果还真有: this ...
- JavaScript监听手机物理返回键的两种解决方法
JavaScript没有监听物理返回键的API,所以只能使用 popstate 事件监听. 有两个解决办法: 1.返回到指定的页面 pushHistory(); window.addEventList ...
- Elastalert 监控
1.logstash 做监控的优劣 适合match-then-alert 的方式 logstash-filter-metric logstash-input-http_poller 无状态.进程间数据 ...
- haproxy文章
http://ximenfeibing.blog.51cto.com/8809812/1663387