ADO.Net中DataTable的应用

思维导图

1、分页

初始化设置:设置每页大小;设置当前页号为1;

载入数据表:将SQL命令连接属性指向SQL连接,SQL命令查询表的内容,使用数据适配器将查询命令属性指向SQL命令,声明并实例化数据表用以保存数据,以用作数据网格视图的数据源,用数据适配器填充数据表;指定SQL命令的命令文本;该命令查询所有学生成绩,但只返回空表,即只获取架构;声明并实例化SQL数据适配器;SQL数据适配器读取数据,并只将架构填充至医生信息数据表;声明并实例化数据列,用于保存行编号;设置数据列的名称、类型,类型需借助typeof获取;设置数据列为自增列;自增种子为1,自增步长也为1;

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 No_hospital,No_doctor,Name_doctor,BirthDate_doctor,employDate,Graduate_doctor,Remain_doctor,Department_No,TitleNo,Gender_doctor   FROM tb_doctor WHERE 1=0;";                                          //指定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命令;
            sqlDataAdapter2.MissingSchemaAction = MissingSchemaAction.AddWithKey;
            this.DoctorTable = new DataTable();                                                       //声明并实例化数据表,用于保存所有学生,以用作数据网格视图的数据源;
            sqlConnection.Open();                                                                           //打开SQL连接;
            sqlDataAdapter.Fill(DepartmentTable);                                                                //SQL数据适配器读取数据,并填充班级数据表;
            sqlDataAdapter1.Fill(TitleTable);
            sqlDataAdapter2.Fill(this.DoctorTable);                                                             //SQL数据适配器读取数据,并填充学生数据表;
            DataColumn rowIdColumn = new DataColumn();
            rowIdColumn.ColumnName = "RowID";                                                               //设置数据列的名称;
            rowIdColumn.DataType = typeof(int);                                                             //设置数据列的类型;类型需借助typeof获取;
            rowIdColumn.AutoIncrement = true;                                                               //设置数据列为自增列;
            rowIdColumn.AutoIncrementSeed = 1;                                                              //设置数据列的自增种子为1;
            rowIdColumn.AutoIncrementStep = 1;                                                              //设置数据列的自增步长为1;
            DoctorTable.Columns.Add(rowIdColumn);
            sqlCommand2.CommandText = "SELECT No_hospital,No_doctor,Name_doctor,BirthDate_doctor,employDate,Graduate_doctor,Remain_doctor,Department_No,TitleNo, Gender_doctor  FROM tb_doctor";
            sqlDataAdapter2.Fill(this.DoctorTable);
            sqlConnection.Close();                                                                          //关闭SQL连接;
            this.MaxPageNo = DoctorTable.Rows.Count / this.PageSize + 1;                               //根据课程数据表的行集合的计数,计算最大页号;
            this.CurrentPageView = new DataView();                                                          //实例化本窗体的课程数据视图,用于筛选当前页的记录;
            this.CurrentPageView.Table = this.DoctorTable ;                                                  //设置课程数据视图对应的数据表;
            this.CurrentPageView.Sort = "RowID ASC";                                                        //设置课程数据视图的排序条件,即行编号;
            this.CurrentPageView.RowFilter =                                                                //设置课程数据视图的行筛选条件,即筛选当前页的记录;
                "RowID >" + (this.CurrentPageNo - 1) * this.PageSize
                + " AND RowID <=" + this.CurrentPageNo * this.PageSize;                                     //根据当前页号、每页大小,计算相应的行编号范围,并作为行筛选条件;
            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["BirthDate_doctor"].HeaderText = "生日";
            this.dgv_doctor.Columns["employDate"].HeaderText = "就职日期";
            this.dgv_doctor.Columns["Gender_doctor"].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["RowID"].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);
        }

“上一页”:若当前页号大于1;则当前页号递减;设置医生信息视图的行筛选条件,即筛选当前页的记录;

 if (this.CurrentPageNo > 1)                                                                     //若当前页号大于1;
            {
                this.CurrentPageNo--;                                                                       //则当前页号递减;
            }
            this.CurrentPageView.RowFilter =                                                                //设置课程数据视图的行筛选条件,即筛选当前页的记录;
                "RowID >" + (this.CurrentPageNo - 1) * this.PageSize
                + " AND RowID <=" + this.CurrentPageNo * this.PageSize;                                     //根据当前页号、每页大小,计算相应的行编

“下一页”:若当前页号尚未超出最大页号;则当前页号递增;设置医生信息视图的行筛选条件,即筛选当前页的记录;根据当前页号、每页大小,计算相应的行编号范围,并作为行筛选条件;

 if (this.CurrentPageNo < this.MaxPageNo)                                                        //若当前页号尚未超出最大页号;
            {
                this.CurrentPageNo++;                                                                       //则当前页号递增;
            }
            this.CurrentPageView.RowFilter =                                                                //设置课程数据视图的行筛选条件,即筛选当前页的记录;
                "RowID >" + (this.CurrentPageNo - 1) * this.PageSize
                + " AND RowID <=" + this.CurrentPageNo * this.PageSize;                                     //根据当前页号、每页大小,计算相应的行编

示例:

原文地址:https://www.cnblogs.com/ZQHHP/p/9886417.html

时间: 2024-08-29 21:47:39

ADO.Net中DataTable的应用的相关文章

ADO.Net中DataTable的应用(知识点描述、思维导图、示例代码、效果截图)

在我们编写代码的时候从数据库里取出数据,填充到dataset里,再根据表的名字,实例化到 DataTable 中.下面是 Ado.Net 关系:Connection_____Command____DataAdapter____Dataset  _____Datareader ADO.NET可以在与数据库断开连接的方式下通过DataSet或DataTable对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源. 一.思维导图: 二.知识点描述: Data Table的构造函数:

浅谈ADO.NET中的对象——Connection、Command、DataReader、DataAdapter、DataSet、DataTable

可能是当初没有好好总结的缘故,学习.NET以来,对ADO.NET中的对象一直有些模糊,今天重新回顾了一下,通过查资料,总结,结合自己的观点整理一下ADO.NET中Connection.Command.DataReader.DataAdapter. DataSet.DataTable这几个对象的相关知识,希望对初学者能起到一个全局把控的作用,希望大牛能留下宝贵的指导意见. 以下的例子仅以连接 SQL Server数据库为例,所以分别以SqlConnection.SqlCommand.SqlData

Ado.net中DataSet和SqlDataReader的区别

概述: 一,SqlDataReader //基于连接,只读访问 适合数据量较小. SqlDataAdapter //基于非连接,适于数据量较大时,可以另行修改,最后再把修改结果返回给数据库.要求资源也大一点 二,SqlDataAdapter 读取数据后将数据集放入DataSet ,DataSet 的数据存在本地客服机内存. 三,SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活,一般在只读的时候才用到. SqlDataAdapter返回的是数据集或者表,可以对其中的

ADO.NET中的五个主要对象

Connection:主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取得数据的.Close和Dispose的区别,Close以后还可以Open,Dispose以后则不能再用. Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询.新增.修改.删除数据等指令,以及调用存在数据库中的存储过程等.这个对象是架构在Connection 对象上,也就是Command 对象是透过连接到数据源. DataAdapter:主要是在数据源以及DataSet 

ADO.NET中5大对象简介

ADO.NET在以前的学习中接触过,并以应用过,但并没有好好的总结过.最近这段时间的学习又复习了这块的知识,下面就我现在所知道的总结归纳一下. ADO.NET是基于XML的全新的数据库访问技术,与传统的ADO相比,它主要核心z是XML, 它是一个断开式连接,它主要依靠的是DataSet数据集. 一.ADO.NET对象模型,如下图. .NET数据提供程序和DataSet是ADO.NET中的两个重要组件. .NET数据提供程序:保证了客户端和服务器的连接(即,应用程序和数据库之间的连接). .NET

[转载]ADO.NET中的五个主要对象

Connection:主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取得数据的.Close和Dispose的区别,Close以后还可以Open,Dispose以后则不能再用. Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询.新增.修改.删除数据等指令,以及调用存在数据库中的存储过程等.这个对象是架构在Connection 对象上,也就是Command 对象是透过连接到数据源. DataAdapter:主要是在数据源以及DataSet 

ADO.NET中的模型及对象

一.ADO.NET中的模型及对象 1.EexcuteNonQuery------>实现非查询操作(增删改) sql语句查询非参数化 //连接字符串 string conStr = @"server=.;database=MyDataBase;uid=sa;pwd=sa"; //要执行的sql语句 string sql = "insert into MyDataBase(Id,Name,Age,Sex) values(1,'曹操',500,'m')"; //创建

ADO.NET中的5个主要对象

1.Connection:主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取得数据的. Close和Dispose的区别,Close以后还可以Open,Dispose以后则不能再用. 2.Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询.新增.修改.删除数据等指令,以及调用存在数据库中的存储过程等. 这个对象是架构在Connection 对象上,也就是Command 对象是透过连接到数据源. 3.DataAdapter:主要是在数据源以及

Ado.net中SQLServer数据库连接池

相关资源: https://www.cnblogs.com/7qi7/articles/2342494.html https://www.cnblogs.com/lonelyxmas/p/11229038.html MSDN解释 连接到数据库服务器通常由几个需要很长时间的步骤组成. 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前事务中登记,等等. 实际上,大多数应用程序仅使用一个或几个不同的连接配