如何在前端界面操作数据表

思维导图:
在这里插入图片描述

在前端界面操作数据表来实现对数据库的操作,主要分4各部分,增删改查。通过Parameters.Add(@变量名,值)进行传值,思路上基本类似,主要区别就在于SQL命令语句的不同。下面主要就用DataGridView控件来实现数据表的查询简单介绍一下:
(1)首先声明并实例化SQL连接,连接上数据库,我这里是查询所有员工,以用作数据网格视图数据源;

SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;                             //配置管理器从配置文件读取连接字符串,并将之赋予SQL连接的连接字符串属性;
            SqlCommand sqlCommand1 = new SqlCommand();                                                       //声明并实例化SQL命令;
            sqlCommand1.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand1.CommandText = "SELECT * FROM tb_yg;";                                            //指定SQL命令的命令文本;该命令查询所有员工,以用作数据网格视图数据源;

(2)实例化员工数据表,利用数据适配器读取数据,并填充数据表,用之前要在form里定义私有字段

    /// 私有字段:员工数据表;
    private DataTable ygTable;
     /// 私有字段:按名称排序的员工数据视图;
    private DataView ygViewByName;

.

SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
sqlDataAdapter1.MissingSchemaAction = MissingSchemaAction.AddWithKey;                            //设置SQL数据适配器在缺少架构时的动作为追加主键,从而获取数据库中定义的主键;

this.ygTable = new DataTable();                                                             //实例化本窗体的员工数据表,用于保存所有员工,以用作数据网格视图数据源;
sqlConnection.Open();                                                                           //打开SQL连接;
sqlDataAdapter1.Fill(this.ygTable);                                                          //SQL数据适配器读取数据,并填充员工数据表;
sqlConnection.Close();                                                                          //关闭SQL连接;

(3)将数据表设为DataGridView的数据源,也可以修改列文本,以及隐藏列等操作,如下

			this.ygViewByName = new DataView();                                                         //实例化本窗体的员工数据视图,用于按照名称进行快速查询;
            this.ygViewByName.Table = this.ygTable;                                                 //设置员工数据视图对应的数据表;
            this.ygViewByName.Sort = "Name ASC";                                                        //设置员工数据视图的排序条件,即查询所覆盖的列;
            this.dgv_yg.Columns.Clear();                                                                //数据网格视图的列集合清空;
            this.dgv_yg.DataSource = this.ygTable;                                                  //将数据网格视图的数据源设为员工数据表;
            this.dgv_yg.Columns["No"].HeaderText = "编号";                                              //将数据网格视图的指定列的表头文本设为中文;
            this.dgv_yg.Columns["Name"].HeaderText = "姓名";
            this.dgv_yg.Columns["Sex"].HeaderText = "性别";
            this.dgv_yg.Columns["Birthday"].HeaderText = "生日";
            this.dgv_yg.Columns["Phone"].HeaderText = "电话";
            this.dgv_yg.Columns["Address"].HeaderText = "住址";
            this.dgv_yg.Columns["Pwd"].Visible = false;                                              //将数据网格视图的指定列设为不可见;
            this.dgv_yg.Columns["Ksno"].Visible = false;  
            this.dgv_yg.Columns["Image"].Visible = false;
            this.dgv_yg.Columns[this.dgv_yg.Columns.Count - 1].AutoSizeMode =                       //数据网格视图的最后一列的自动调整列宽模式设为填充(至数据网格视图右侧边缘);
            DataGridViewAutoSizeColumnMode.Fill;

(4)这样设置的数据网格视图都是文本框模式,太过于单调,我们也可以将下拉框加入进去,如下:将员工所属科室设置为下拉框模式
先定义个私有字段:科室数据表

private DataTable ksnoTable;

接着,同上面所讲查询科室,作为数据源,打开数据库,填充数据表

   			SqlCommand sqlCommand2 = new SqlCommand();                                                       //声明并实例化SQL命令;
            sqlCommand2.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand2.CommandText = "SELECT * FROM tb_ks;";                                            //指定SQL命令的命令文本;该命令查询所有科室,以用作数据网格视图数据源;
            SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter2.SelectCommand = sqlCommand2;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
            sqlDataAdapter2.MissingSchemaAction = MissingSchemaAction.AddWithKey;                            //设置SQL数据适配器在缺少架构时的动作为追加主键,从而获取数据库中定义的主键;
  			 sqlConnection.Open();                                                                           //打开SQL连接;
            sqlDataAdapter2.Fill(this.ksnoTable);                                                          //SQL数据适配器读取数据,并填充科室数据表;
            sqlConnection.Close();                                                                          //关闭SQL连接;

最后将下拉框加入数据网络视图列集合

			 DataGridViewComboBoxColumn ksColumn = new DataGridViewComboBoxColumn();                  //声明并实例化数据网格视图下拉框列,用于设置先修课程;
            ksColumn.Name = "Ksno";                                                             //设置下拉框列的名称;
            ksColumn.HeaderText = "科室";                                                        //设置下拉框列的表头文本;
            ksColumn.DataSource = this.ksnoTable;                                               //设置下拉框列的数据源为科室数据表;
            ksColumn.DisplayMember = "Name";                                                         //设置下拉框列的显示成员为(科室数据表的)名称(列);
            ksColumn.ValueMember = "No";                                                             //设置下拉框列的值成员为(科室数据表的)编号(列);
            ksColumn.DataPropertyName = "Ksno";                                               //设置下拉框列的数据属性名称为(员工数据表的)科室编号(列);
            ksColumn.DisplayIndex = 3;                                                               //设置下拉框列的显示顺序;
            ksColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;                             //设置下拉框列的自动调整列宽模式为填充;
            this.dgv_yg.Columns.Add(ksColumn);                                                   //将下拉框列加入数据网格视图的列集合;

(5)通过Button实现模糊检索

if (cbo_condition.Text == "按工号查询")
        {
            DataRow searchResultRow = this.ygTable.Rows.Find(this.txt_search.Text.Trim());            //借助本窗体的课程数据表的行集合的方法Find,根据主键值(即课程编号)快速查找相应课程,并返回其所在的数据行;但数据行不能作为数据源,需另行创建数据表,并导入该数据行,最后将数据表作为数据源;
            DataTable searchResultTable = this.ygTable.Clone();                                         //借助本窗体的课程数据表的方法Clone,创建相同架构的空表,用于保存搜索结果所在数据行;
            searchResultTable.ImportRow(searchResultRow);                                                   //将(复制后的)数据行导入数据表;
            this.dgv_yg.DataSource = searchResultTable;                                                 //将数据网格视图的数据源设为搜索结果数据表;
        }
        else
        {
            if (cbo_condition.Text == "按姓名查询")
            {
                DataRow[] searchResultRows =
                this.ygTable.Select("Name LIKE '%" + this.txt_search.Text.Trim() + "%'");             //借助本窗体的课程数据表的方法Select,并提供与SQL类似的谓词表达式作为查询条件,根据拼音缩写进行模糊查询(仅支持%通配符);查询将返回数据行数组;
                DataTable searchResultTable = this.ygTable.Clone();                                         //借助本窗体的课程数据表的方法Clone,创建相同架构的空表,用于保存搜索结果所在数据行;
                foreach (DataRow row in searchResultRows)                                                       //遍历搜索结果所在数据行数组;
                {
                    searchResultTable.ImportRow(row);                                                           //数据行导入数据表;
                }
                this.dgv_yg.DataSource = searchResultTable;                                                 //将数据网格视图的数据源设为搜索结果数据表;
            }

运行结果如下:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

qq_43166840

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值