学习笔记:如何在前端界面操作数据表

思维导图:

 

1、载入数据表:将SQL命令连接属性指向SQL连接,SQL命令查询表的内容,使用数据适配器将查询命令属性指向SQL命令,声明并实例化数据表用以保存数据,以用作数据网格视图的数据源,用数据适配器填充数据表

2、数据表的插入、更新、删除:向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;将SQL数据适配器的属性InsertCommand指向用于插入记录的SQL命令,将SQL数据适配器的属性UpdateCommand指向用于更新记录的SQL命令,将SQL数据适配器的属性DeleteCommand指向用于删除记录的SQL命令;声明数据表,并指向数据网格视图的数据源;数据源默认类型为object,还需强制转换类型;SQL数据适配器根据数据表提交所有更新,并返回受影响行数

3、查询:设置SQL数据适配器在缺少架构时的动作为追加主键,从而获取数据库中定义的主键;借助数据表的方法Copy来复制数据表,实例化数据视图,用于进行快速查询;借助数据表的行集合的方法Find,根据主键值快速查找相应课程,并返回其所在的数据行;但数据行不能作为数据源,需另行创建数据表,并导入该数据行,最后将数据表作为数据源;借助数据表的方法Clone,创建相同架构的空表,用于保存搜索结果所在数据行;

示例:

在这个例子中,因为主键是自动编号,所以将主键进行隐藏不显示不修改

 public partial class frm_Systemadmin : Form
    {
        private DataTable DepartmentTable;

        private DataView DepartmentViewByName;
        public frm_Systemadmin()
        {
            InitializeComponent();
           
            this.StartPosition = FormStartPosition.CenterScreen;                                            //本窗体启动位置设为屏幕中央;           
            this.dgv_department .RowHeadersVisible = false;                                                      //数据网格视图的行标题不可见;
            this.dgv_department .BackgroundColor = Color.White;                                                  //数据网格视图的背景色设为白色;
            this.dgv_department .AutoSizeColumnsMode =
                DataGridViewAutoSizeColumnsMode.AllCells;                                                   //数据网格视图的自动调整列宽模式设为显示所有单元格; 
        }

        private void btn_research_Click(object sender, EventArgs e)
        {
            DataRowView[] searchResultRowViews =
              this.DepartmentViewByName .FindRows(this.txb_department .Text.Trim());                            //借助本窗体的按名称排序的课程数据视图的方法FindRows,根据排序列(即课程名称)快速查找相应课程;由于该列并非主键,可能返回多行查询结果,故返回数据行视图数组;数据行视图数组不能直接作为数据源,需转为列表后方可作为数据源;
            DataTable searchResultTable = this.DepartmentTable .Clone();                                         //借助本窗体的课程数据表的方法Clone,创建相同架构的空表,用于保存搜索结果所在数据行;
            foreach (DataRowView dataRowView1 in searchResultRowViews)                                      //遍历搜索结果所在数据行视图数组;
            {
                searchResultTable.ImportRow(dataRowView1.Row);                                              //通过每条数据行视图的属性Row获取相应的数据行,并导入数据表;
            }
            this.dgv_department .DataSource = searchResultTable;                                                 //将数据网格视图的数据源设为搜索结果数据表;      

        }
     

        private void frm_Systemadmin_Load(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=医院门诊预约管理系统;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
            sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand.CommandText = "SELECT * FROM tb_Department;";                                           //指定SQL命令的命令文本;该命令查询所有学生;
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter.SelectCommand = sqlCommand;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
            sqlDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;                            //设置SQL数据适配器在缺少架构时的动作为追加主键,从而获取数据库中定义的主键;
            this.DepartmentTable  = new DataTable();                                                       //声明并实例化数据表,用于保存所有学生,以用作数据网格视图的数据源;
            sqlConnection.Open();                                                                           //打开SQL连接;
            sqlDataAdapter.Fill(DepartmentTable);                                                              //SQL数据适配器读取数据,并填充学生数据表;
            sqlConnection.Close();                                                                         //关闭SQL连接;
            this.DepartmentViewByName = new DataView();
            this.DepartmentViewByName.Table= this.DepartmentTable;
            this.DepartmentViewByName.Sort = "Name ASC";                                                        //设置课程数据视图的排序条件,即查询所覆盖的列
            this.dgv_department.DataSource = DepartmentTable;                                                       //将数据网格视图的数据源设为学生数据表;
            this.dgv_department .Columns["Name"].HeaderText = "科室名";
            this.dgv_department.Columns["No"].Visible = false;
            this.dgv_department.Columns[this.dgv_department.Columns.Count - 1].AutoSizeMode =                       //数据网格视图的最后一列的自动调整列宽模式设为填充(至数据网格视图右侧边缘);
                DataGridViewAutoSizeColumnMode.Fill;
        }

        private void dgv_department_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void btn_update_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=医院门诊预约管理系统;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand insertCommand = new SqlCommand();                                                    //声明并实例化SQL命令;该命令用于插入记录;
            insertCommand.Connection = sqlConnection;                                                       //将SQL命令的连接属性指向SQL连接;
            insertCommand.CommandText =                                                                     //指定SQL命令的命令文本;
                "INSERT tb_Department"
                + "(Name)"
                + " VALUES(@Name);";
            insertCommand.Parameters.Add("@Name", SqlDbType.VarChar, 0, "Name");                                  //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;         
            SqlCommand updateCommand = new SqlCommand();                                                    //声明并实例化SQL命令;该命令用于更新记录;
            updateCommand.Connection = sqlConnection;                                                       //将SQL命令的连接属性指向SQL连接;
            updateCommand.CommandText =                                                                     //指定SQL命令的命令文本;
                "UPDATE tb_Department" 
                + " SET Name=@Name"
                + " WHERE No=@No;";
            updateCommand.Parameters.Add("@Name", SqlDbType.VarChar, 0, "Name");                               //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;
            updateCommand.Parameters.Add("@No", SqlDbType.VarChar,0 , "No");
          
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter.InsertCommand = insertCommand;                                                   //将SQL数据适配器的属性InsertCommand指向用于插入记录的SQL命令;
            sqlDataAdapter.UpdateCommand = updateCommand;                                                   //将SQL数据适配器的属性UpdateCommand指向用于更新记录的SQL命令;
            
            DataTable DepartmentTable = (DataTable)this.dgv_department .DataSource;                                 //声明数据表,并指向数据网格视图的数据源;数据源默认类型为object,还需强制转换类型;
           
            sqlConnection.Open();                                                                           //打开SQL连接;
            int rowAffected = sqlDataAdapter.Update(DepartmentTable);                                         //SQL数据适配器根据学生数据表提交所有更新,并返回受影响行数;
            sqlConnection.Close();                                                                          //关闭SQL连接;
            MessageBox.Show("更新" + rowAffected.ToString() + "行。");                                      //在消息框显示受影响行数;
        }
    }

 

4、网格视图

private void frm_hospitaladmin_Load(object sender, EventArgs e)
        {
            this.PageSize = 10;                                                                             //设置每页大小为10(行记录);
            this.CurrentPageNo = 1;                                                                         //设置当前页号为1;
            SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=医院门诊预约管理系统;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
            SqlCommand sqlCommand1 = new SqlCommand();
            SqlCommand sqlCommand2 = new SqlCommand();                                                      //声明并实例化SQL命令;
            sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand1.Connection = sqlConnection;
            sqlCommand2.Connection = sqlConnection;                                                         //将SQL命令的连接属性指向SQL连接;
            sqlCommand.CommandText = "SELECT * FROM tb_Department;";                                             //指定SQL命令的命令文本;该命令查询所有班级,以用作下拉框数据源;
            sqlCommand1.CommandText = "SELECT * FROM tb_doctorTitle";
            sqlCommand2.CommandText = "SELECT * FROM tb_doctor;";                                          //指定SQL命令的命令文本;该命令查询所有学生;
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter.SelectCommand = sqlCommand;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
            DataTable DepartmentTable = new DataTable();                                                         //声明并实例化数据表,用于保存所有班级,以用作下拉框数据源;
            SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter1.SelectCommand = sqlCommand1;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
            DataTable TitleTable = new DataTable();
            SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter();                                          //声明并实例化SQL数据适配器;
            sqlDataAdapter2.SelectCommand = sqlCommand2;                                                    //将SQL数据适配器的查询命令属性指向SQL命令;
            DataTable DoctorTable = new DataTable();                                                       //声明并实例化数据表,用于保存所有学生,以用作数据网格视图的数据源;
            sqlConnection.Open();                                                                           //打开SQL连接;
            sqlDataAdapter.Fill(DepartmentTable);                                                                //SQL数据适配器读取数据,并填充班级数据表;
            sqlDataAdapter1.Fill(TitleTable);
            sqlDataAdapter2.Fill(DoctorTable);                                                             //SQL数据适配器读取数据,并填充学生数据表;
            sqlConnection.Close();                                                                          //关闭SQL连接;
            this.dgv_doctor .Columns.Clear();                                                                 //数据网格视图的列集合清空;
            this.dgv_doctor .DataSource = DoctorTable;                                                       //将数据网格视图的数据源设为学生数据表;
            this.dgv_doctor.Columns["No_hospital"].HeaderText = "医院编号";                                               //将数据网格视图的指定列的表头文本设为中文;
            this.dgv_doctor.Columns["No_doctor"].HeaderText = "医生编号";
            this.dgv_doctor.Columns["Name_doctor"].HeaderText = "姓名";
            this.dgv_doctor.Columns["Gender_doctor"].HeaderText = "性别";
            this.dgv_doctor.Columns["BirthDate_doctor"].HeaderText = "生日";
            this.dgv_doctor.Columns["employDate"].HeaderText = "就职日期";
            this.dgv_doctor.Columns["Graduate_doctor"].HeaderText = "毕业院校";
            this.dgv_doctor.Columns["Remain_doctor"].HeaderText = "可预约数";
            this.dgv_doctor.Columns["Department_No"].Visible = false;                                              //将数据网格视图的指定列设为不可见;
            this.dgv_doctor.Columns["TitleNo"].Visible = false;
            this.dgv_doctor.Columns[this.dgv_doctor.Columns.Count - 1].AutoSizeMode =                         //数据网格视图的最后一列的自动调整列宽模式设为填充(至数据网格视图右侧边缘);
                DataGridViewAutoSizeColumnMode.Fill;
            DataGridViewComboBoxColumn DepartmentColumn = new DataGridViewComboBoxColumn();                      //声明并实例化数据网格视图下拉框列,用于设置学生的班级;
            DepartmentColumn.Name = "Department";                                                                     //设置下拉框列的名称;
            DepartmentColumn.HeaderText = "科室";                                                                //设置下拉框列的表头文本;
            DepartmentColumn.DataSource = DepartmentTable;                                                            //设置下拉框列的数据源为班级数据表;
            DepartmentColumn.DisplayMember = "Name";                                                             //设置下拉框列的显示成员为(班级数据表的)名称(列);
            DepartmentColumn.ValueMember = "No";                                                                 //设置下拉框列的值成员为(班级数据表的)编号(列);
            DepartmentColumn.DataPropertyName = "Department_No";                                                       //设置下拉框列的数据属性名称为(学生数据表的)班级编号(列);
            DepartmentColumn.DisplayIndex = 4;                                                                   //设置下拉框列的显示顺序;
            DepartmentColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;                                 //设置下拉框列的自动调整列宽模式为填充;
            this.dgv_doctor.Columns.Add(DepartmentColumn);
           
            DataGridViewComboBoxColumn TitleColumn = new DataGridViewComboBoxColumn();                      //声明并实例化数据网格视图下拉框列,用于设置学生的班级;
            TitleColumn.Name = "Title";                                                                     //设置下拉框列的名称;
            TitleColumn.HeaderText = "职称";                                                                //设置下拉框列的表头文本;
            TitleColumn.DataSource = TitleTable;                                                            //设置下拉框列的数据源为班级数据表;
            TitleColumn.DisplayMember = "Title";                                                             //设置下拉框列的显示成员为(班级数据表的)名称(列);
            TitleColumn.ValueMember = "No_doctorTitle";                                                                 //设置下拉框列的值成员为(班级数据表的)编号(列);
            TitleColumn.DataPropertyName = "Title_No";                                                       //设置下拉框列的数据属性名称为(学生数据表的)班级编号(列);
            TitleColumn.DisplayIndex = 5;                                                                   //设置下拉框列的显示顺序;
            TitleColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;                                 //设置下拉框列的自动调整列宽模式为填充;
            this.dgv_doctor.Columns.Add(TitleColumn);                           
        }

 

 

转载于:https://www.cnblogs.com/ZQHHP/p/9828668.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值