ADO.Net中Data Table的应用
知识点
可以直接将数据从数据库填充到DataTable对象中,也可以将DataTable对象添加到现有的DataSet对象中。在断开连接的方式下,DataSet对象提供了和关系数据库一样的关系数据模型,代码中可以直接访问DataSet对象中的DataTable对象,也可以添加、删除ADO.NET对象DataTable。ADO.NET对象SqlDataAdapter通过SelectCommand、InsertCommand、UpdateCommand和 DeleteCommand属性为后台数据库提供对应的操作命令,并传递需要的参数。一般情况下,只需要提供SELECT语句和连接字符串创建 SqlDataAdapter对象,然后利用SqlCommandBuilder对象生成InsertCommand、UpdateCommand和 DeleteCommand属性。
1.创建DataTable对象
可以通过以下两种方式创建DataTable对象:1) 通过DataTable类的构造函数创建DataTable对象,例如:DataTable table = new DataTable(); 2) 通过DataSet的Tables对象的Add方法创建DataTable对象,例如:DataSet dataset = new DataSet(); DataTable table = dataset.Tables.Add("MyTableName")
2. 在DataTable对象中添加列在DataTable对象中添加列的最常用的方法是通过DataTable对象的Column属性中的Add方法。添加后的每一列都是一个DataColumn对象。
3. 设置DataTable对象的主键
关系数据库中的表一般都有一个主键,用来惟一标识表中的每一行记录。通过DataTable对象的PrimaryKey属性可以设置Datatable的主键。主键可以是一个或者多个DataColumn对象组成的数组。例如:DataColumn[] key = new DataColumn[1];//dt是一个DataTable对象 key[0] = dt.Columns[0]; dt.PrimaryKey = key;
4. 在DataTable对象中创建行DataTable对象的每一行都是一个DataRow对象,所以创建行时可以先利用DataTable对象的NewRow方法创建一个DataRow对象,并设置新行中各列的数据,然后利用Add方法将DataRow对象添加到表中
5. 将SQL Server数据库中的表填充到DataTable中
除了可以直接创建ADO.NET对象DataTable的行列信息外,也可以通过DateAdapter对象的Fill方法将SQL Server数据库中的表填充到DataTable对象中。
示例代码
SqlConnection sqlConnection = new SqlConnection(); //声明并实例化SQL连接;
sqlConnection.ConnectionString =
"Server=(local);Database=NurseBase;Integrated Security=sspi"; //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
SqlCommand sqlCommand = new SqlCommand(); //声明并实例化SQL命令;
sqlCommand.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接;
sqlCommand.CommandText = "SELECT * FROM tb_Pharmacy;"; //指定SQL命令的命令文本;该命令查询所有学生;
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //声明并实例化SQL数据适配器;
sqlDataAdapter.SelectCommand = sqlCommand; //将SQL数据适配器的查询命令属性指向SQL命令;
DataTable pharmacyTable = new DataTable(); //声明并实例化数据表,用于保存所有药品,以用作数据网格视图的数据源;
sqlConnection.Open(); //打开SQL连接;
sqlDataAdapter.Fill(pharmacyTable); //SQL数据适配器读取数据,并填充药库数据表;
sqlConnection.Close(); //关闭SQL连接;
this.dgv_Pharmacy.DataSource = pharmacyTable; //将数据网格视图的数据源设为药品数据表;
效果截图