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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值