C# WinForms+SQL Server 一周学习笔记
前言
零基础一周理解 C# 桌面开发两大核心:WinForms 表格控件、SQL Server 数据库,适合新手入门。
一、WinForms 两大表格控件
1. ListView 轻量列表控件
1.1 核心属性
View视图:Details表格(最常用)、List / 大小图标 / 平铺Columns:表头;Items:行集合,ListViewItem代表一行- 表格增强:
FullRowSelect整行选中、GridLines网格线、CheckBoxes复选框、MultiSelect多选
1.2 性能优化
批量增删数据用BeginUpdate()/EndUpdate()防界面卡顿; 上万条数据开启VirtualMode虚拟模式,按需渲染节省内存。
1.3 常用功能代码
- 添加数据
listView1.View = View.Details; listView1.Columns.Add("姓名",100); ListViewItem item = new ListViewItem("张三"); item.SubItems.Add("21"); listView1.Items.Add(item);- 批量添加
listView1.BeginUpdate(); for(int i=0;i<5000;i++) listView1.Items.Add(new ListViewItem(i+"")); listView1.EndUpdate();- 删除勾选行:遍历
CheckedItems弹窗确认后 Remove - 列头排序:自定义
ListViewItemComparer比较器,绑定ColumnClick切换升降序 - 图标:绑定
SmallImageList,构造 Item 传入图片索引
2. DataGridView 业务专用表格(项目首选)
2.1 核心属性
- 样式:
AlternatingRowsDefaultCellStyle奇偶行变色;EnableHeadersVisualStyles=false自定义表头颜色 - 交互:
ReadOnly只读;FullRowSelect整行选中;AllowUserToAddRows=false隐藏空白新增行 - 性能:
DoubleBuffered=true消除滚动闪烁
2.2 4 种数据绑定(新手重点)
- Table(推荐新手):直接操作表行,控件自动刷新
- List <实体类>:修改数据需重新赋值 DataSource 刷新
- 手动添加列行:无数据库纯前端展示
2.3 自定义特殊列
按钮列、下拉框列、复选框列、图片列,满足管理系统操作需求。
2.4 增删改操作
- 修改:直接赋值
row.Cells["列名"].Value - 删除选中行:遍历
SelectedRows,跳过空白新增行执行 Remove - 批量删除:倒序循环行,搭配
SuspendLayout()优化卡顿
2.5 高频事件
CellContentClick(按钮点击)、CellBeginEdit(编辑)、SelectionChanged(切换选中行)
控件选型对比
- ListView:多视图、图标友好,适合简单列表、文件展示
- DataGridView:原生数据绑定、支持编辑 / 按钮列,适合订单、人员、库存业务系统
二、SQL Server T-SQL 数据库基础
1. 基础概念
- DB 数据库、DBMS 数据库管理系统、DBA 管理员;T-SQL 是 SQL Server 专属增强语言
- 文件:
.mdf主文件、.ldf日志文件;系统库:master、tempdb、model、msdb - 常用数据类型:int、varchar/nchar 字符串、money 金额、bit 布尔、DateTime 时间;身份证必须存字符串
2. 四大数据完整性(约束核心)
- 实体完整性(行唯一)主键(唯一 + 非空,一张表仅 1 个)、唯一约束(允许 1 个 NULL)、自增标识列
- 域完整性(列合法)数据类型、非空、默认值、Check 检查(年龄 18-25、性别仅男女)
- 引用完整性(多表关联)外键:外键表关联主键表,必须先存在主键数据才能插入外键
- 自定义完整性:高阶拓展
3. 增删改查 CRUD
- 新增
INSERT:指定列 / 全列插入,自增列不能手动赋值 - 修改
UPDATE:必须带WHERE,否则全表更新 - 删除
DELETE:记录日志,可回滚,自增不重置TRUNCATE:清空全表,速度更快,自增重置- 查询:
select top N 列名 as 别名 from 表 where 条件(like/in/between/is null) group by 分组 order by 列 desc- 函数:字符串截取、日期格式化、数值四舍五入;
UNION ALL合并查询结果(不去重,性能更高)
4. 多表联查
- 内连接
INNER JOIN:只返回两边匹配数据 - 左连接
LEFT JOIN:保留左表全部数据,无匹配填充 NULL(最常用) - 右连接 / 全连接 / 交叉笛卡尔积(极少用)
- 自连接:同表别名关联(员工 + 直属领导)
5. 子查询 & 事务
- 子查询:单行单列(=/>/<)、多行单列(IN)、多列作为虚拟表
- 事务:保证多步修改原子性(转账场景),出错回滚、无错提交
begin transaction --多条update/insert if @@error<>0 rollback else commit三、总结
本周我系统学习了 C# WinForms 桌面开发与 SQL Server 数据库基础,理清了前后端数据交互完整流程。前端掌握 ListView、DataGridView 两大表格控件,分清两者适用场景,学会数据绑定、批量加载优化、增删改查与自定义列开发等知识点。后端理解 T-SQL 核心语法,掌握数据表约束、基础增删改查、多表联查与事务,理解外键关联、数据完整性的作用。整体学习由浅入深,从界面渲染到数据库存取形成闭环,明白了桌面程序开发逻辑:SQL 查询数据后绑定表格展示,用户操作界面再同步修改数据库,为后续学习开发打下入门基础。