C#学习之ObjectOriented、Record
一、思维导图
二、知识点析剖
1、面向对象
(1)类:当一个窗体代码太多时,不便于查看和写入,可以使用类来简化代码窗口,使用get关键字来获取一个公有属性的值,
而使用set来设置一个公有属性的值,如:
public string No
{
get;
set;
}
(2)三层架构:应用于项目比较大时,这样可以让项目模块化,分工明确,易于维护。三层架构是指界面层(UI),业务逻
辑层(BLL)和数据访问层(DAL),界面层主要完成与用户的交互;逻辑层完成商业逻辑运算;数据层完成数据存储。
(3)SQL助手:调用SQL助手的静态方法GetCommand来创建SQL命令,如:
using (SqlCommand sqlCommand = GetCommand(commandText, isStoredProcedure, sqlParameters))
2、记录
(1)sqlDataReader数据阅读器:可以读取表中的数据,如:
SqlDataReader sqlDataReader = sqlCommand2.ExecuteReader();
if (sqlDataReader.Read())
{
this.txb_no.Text = sqlDataReader["d_no"].ToString();
this.txb_rename.Text = sqlDataReader["d_rename"].ToString();
}
(2)Control控件
命令按钮Button:书写所需执行的命令
组合框ComboBox:载入数据库某一表中数据,供用户选择,不需手动键入 ,读取时选中数据表相应的值,例:
sqlDataAdapter.Fill(departmentTable); //Fill将数据库表的内容填充
this.cmb_department.DataSource=departmentTable; //设置数据源
this.cmb_department.DisplayMember="name" ; // 设置要显示的列内容
this.cmb_department.ValueMember="no" // 设置隐藏的列
this.cmb_department.SelectedValue=(int)sqlDataReader["no"]; // 读取数据时将选中数据表相应值
单选按钮 RadioButton:供用户选择其中一个,提高系统的可读性,例:
this.rdb_male.Checked=(bool)sqlDataReader(d_sex);
this.rdb_female.Checked=(!bool)sqlDataReader(d_sex); //数据表中性别一列数据类型为bit,这样就可以选中其中一个,另 一个单选按钮不选中
日历控件dataTimePicker:可以显示日期信息,常用于出生日期的设置,例:
首先在数据库表中,日期的属性列d_date的数据类型要设置为Date
在C#里面添加日历控件:
this.dtp1.Value=(DateTime)sqlDataReader["d_date"]; //进行日期型强制转化
(3)Update更新修改数据,如:
sqlCommand.CommandText =
"UPDATE tb_doctor"
+ "SET d_rename=@Name,g_no=@Gender,d_type=@Type,d_cardno=@CardNo,d_title=@Title,d_date=@Date,d_telno=@Tel,no=@Department"
+ " WHERE d_no=@No;";
sqlCommand.Parameters.AddWithValue("@Name", this.txb_rename.Text.Trim());
sqlCommand.Parameters.AddWithValue("@Gender", this.radioButton2.Checked );
sqlCommand.Parameters.AddWithValue("@Type", this.com_type.SelectedItem);
(4)Image 上传图片:先在空间写入using System.Drawing.Imaging; 图片在数据库表中是以可变二进制存放的,所以在数据库表中定义为
photo
VARBINARY(MAX)
,...
在窗体载入图片:
photoBytes =
(sqlDataReader["photo"] == DBNull.Value ? null : (byte[])sqlDataReader["photo"]); //根据照片是否为数据库空值,分别将空值、转为字节数组的照片数据赋予事先声明的字节数组;
}
打开图片的命令:
OpenFileDialog openPhotoDialog = new OpenFileDialog()
{
Title = "打开照片文件(位图格式)"
, Filter = "BMP Files (*.bmp)|*.bmp"
, InitialDirectory = @"C:\"
};
if (openPhotoDialog.ShowDialog() == DialogResult.OK)
{
this.PhotoFileName = openPhotoDialog.FileName;
this.ptb_Photo.Image = Image.FromFile(this.PhotoFileName);
上面记录这部分的知识点的学习界面功能如下:
二、数据表
1、网格视图GridView:从数据库中读取整张表以网格形式显示,例:
this.dgv_DataSource=userTable; //设置数据源
this.dgv_user.Columns["u_no"].HeaderText="编号"; //用中文显示相应属性列,提高程序的可读性;
this.dgv_user.Columns["u_name"].HeaderText="姓名";
this.dgv_user.Columns["u_doctor"].Visible=false; //设置外键的不可见
DataGridViewComboBoxColum doctorColum=new DataGridViewComboBoxColumn(); //设置doctor属性列在网格视图中 以下拉框的形式显示
this.dgv_user.Columns.Add(doctorColumn); //将doctor数据列添加到user数据网格视图中
2、搜索查询search:按数据表的编号(主键)查询,例:
DataRow searchResultRow=userTable.Rows.Find.(this.textBox1.Text.Trim()); //查找数据表主键与textBox1里面内容相应的 数据行
DataTable searchResultTable=userTable.Clone(); //将user表的架构复制一份,无数据源
searchResultTable.ImportRow(searchResultRow); //将上面搜索到的数据行添加到空的user架构中
this.dgv_user.DataSource=searchResultTable(); //将数据源设置为上面查询到的表
按病历号(主键)设计页面如下:
按姓名查询的设计页面如下:
3分页Pagination:当数据表行记录过多时,可以使用分页的功能来优化界面,例:
上一页botton按钮:
if (this.CurrentPageNo > 1) //若当前页号大于1;
{
this.CurrentPageNo--; //则当前页号递减;
}
this.CurrentPageView.RowFilter = //设置课程数据视图的行筛选条件,即筛选当前页的记录;
"RowID >" + (this.CurrentPageNo - 1) * this.PageSize
+ " AND RowID <=" + this.CurrentPageNo * this.PageSize;
下一页botton按钮:
if (this.CurrentPageNo < this.MaxPageNo) //若当前页号尚未超出最大页号;
{
this.CurrentPageNo++; //则当前页号递增;
}
this.CurrentPageView.RowFilter = //设置课程数据视图的行筛选条件,即筛选当前页的记录;
"RowID >" + (this.CurrentPageNo - 1) * this.PageSize
+ " AND RowID <=" + this.CurrentPageNo * this.PageSize;
分页设计页面如下(每一页最多显示10记录):
点击下一页:
三、数据集
1、数据关系 Relation
TreeView是用来表示数据集关系的控件,运用TreeView控件可以让数据集之间的关系联系起来,例:
DataTabler qtypeTable = dataSet.Tables[0]; //声明人群类型数据表,对应数据集的表集合中的第1张数据表;
DataTable yajiankangTable = dataSet.Tables[1]; //声明亚健康人群数据表,对应数据集的表集合中的第2张数据表;
DataTable laonianrenTable = dataSet.Tables[2]; //声明老年人人群数据表,对应数据集的表集合中的第3张数据表;
DataTable manxingbingTable = dataSet.Tables[3]; //声明慢性病人群数据表,对应数据集的表集合中的第4张数据表;
也可以通过选中节点的Click事件来完成页面的跳转,例 :
if (this.treeView1.SelectedNode.Text == "添加新人群") //判断TreeView被选中节点的文本Text
{
this.Hide();
添加新人群 m = new 添加新人群();
m.Show(); //页面的跳转
}
效果图如下:
这次的C#数据库学习到这了。
转载于:https://www.cnblogs.com/Holiday-L/p/9807089.html
C#学习之ObjectOriented、Record相关推荐
- java record用法_JDBM学习八(Record)
1.record概念 Record是从使用者角度来说的,如使用PhysicalRowIdManager插入一个10000byte的Record byte[] data = TestUtil.makeR ...
- Python学习打卡【Task3】异常处理
目录 一.学习知识点概要(review) 二.学习内容(record) 三.学习问题与解答(analysis) 四.学习思考与总结(summary) 一.学习知识点概要(review) 1.Pytho ...
- Python学习打卡【Task4】列表,字典和元组
目录 一.学习知识点概要(review) 二.学习内容(record) 三.学习问题与解答(analysis) 四.学习思考与总结(summary) 一.学习知识点概要(review) ...
- 老白理解的REDO LOG
理解REDO LOG(1) 介质恢复和实例恢复的基本概念 REDO LOG是Oracle为确保已经提交的事务不会丢失而建立的一个机制.实际上REDO LOG的存在是为两种场景准备的,一种我们称之为实例 ...
- salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)...
本篇引用以下三个链接: http://www.tgerm.com/2012/01/recordtype-specific-picklist-values.html?m=1 https://github ...
- php object oriented,PHP学习记录之面向对象(Object-oriented programming,OOP)基础【接口、抽象类、静态方法等】...
本文实例讲述了PHP面向对象(Object-oriented programming,OOP)基础.分享给大家供大家参考,具体如下: 我们可以使用接口(interface),指定某个类必须实现哪些方法 ...
- 在pascal环境下学习record
对比C语言 struct 的使用typepud=^userdata_struct; //用^定义指针类型,record定义前被使用的唯一情况,与C不同userdata_copy_fn=function ...
- 【学习笔记】域名资源记录(Resource Record)
Zone file描述了DNS zone.DNS zone是层级DNS结构的子集,往往是单独的域.Zone file包括域名到IP地址及其他资源的映射,以RR文本形式表示.zone file可能是一个 ...
- 阿雪的学习记录|【V-Rep】Graph找不到Add new data stream to record问题解决及简单实现revolute_joint转动
来先解决在Graph里找不到Add new data stream to record的问题,哇,全网都没人说这个事儿,你们都直接用的4.1.0版本吗!是的,4.2.0版本就是会没有这一项,我也找不着 ...
最新文章
- sockets C#
- 后台报错java.lang.IllegalArgumentException: Invalid character found in the request target.
- 在浏览器中进行深度学习:TensorFlow.js (二)第一个模型,线性回归
- msfvenom 生成php木马,利用msfvenom生成木马程序
- Silvaco 学习笔记——循环:sweep
- Supervisor 使用说明,轻松管理进程
- python tests in xxx问题
- 学习笔记:计算机字符编码标准之GB2312-1980中文字符编码
- pgsql数据替换替换换行符
- 如何修复手机里的m4a格式录音文件
- Labview LabSQL下载
- 企业为什么更青睐选择第三方短信平台?
- 【数据库学习】关系数据库总结
- 另类解决android中用三星手机拍的照片存储后旋转问题。
- python并集_python去并集
- 断食法法定分啊发顺丰啊
- 代码模块化和可读性的tradeoff
- 基于java前行国家公务员模拟笔试系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- ThinkPHP框架总结之配置及使用
- android图片透明度跟缩放大小动画事件
热门文章
- java 泛型 泛型接口(Generic Interfaces)类型形参(Type Parameters)
- python yaml
- jinja filter
- pandas.DataFrame.append
- 从C语言到C++语言
- python多线程没用_Python 的多线程原来不是真的多线程啊
- vSphere Web Client 中的 vSAN 性能图 (2144493)
- 解决重启VCSA 6.0,访问vsphere web client提示:503 Service Unavailable错误
- 关于“想哭”病毒,我也来两句。--转载
- Java基础学习总结(165)——API 安全最佳实践