介绍
这篇文章给大家介绍怎么在c#中将多张表存放到数据中,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
在c#中用同一个数据集保存从数据库中取出的多张表:
cmd.CommandText =,“select *,得到表1;“; NpgsqlDataAdapter da =, new NpgsqlDataAdapter (cmd);,//实例化一个类,它用于连接c#与数据库,并执行cmd语句且将结果缓存到适配器中 DataSet thedataset =, new 数据集();,//实例化一个数据集,实例名为thedataset(通常被定义为ds) da.Fill (thedataset,“thetable1");,//将适配器中的内容填充到数据集的thetable1表中,,thetable1同时被建立 cmd.Parameters.Clear();,//清空cmd内容,如果不清空下次使用时会抛出异常 时间=cmd.CommandText “select  *,得到表;“; 时间=da new NpgsqlDataAdapter (cmd); da.Fill (thedataset,“thetable2");,//将适配器中的内容填充到数据集的thetable2表中,,thetable2同时被建立 cmd.Parameters.Clear();,//清空cmd内容 … int count =, thedataset.Tables [“thetable1"] .Rows.Count;,//获取表thetable1的行数 string a =, thedataset.Tables [“thetable2"] .Rows [1] [0] .ToString()。,//获取表thetable2 2第行第1列的值
<强>补充:在数据库中访问多个表强>
ADO.Net模型有一个很大的优点,就是数据集对象可以跟踪多个表和它们之间的关系。这表示可以在一个操作的不同程序段之间传递完整的相关数据集,体系结构内在地维护数据之间关系的完整性。
ADO.Net中的DataRelation对象用于描述数据库中的多个datatable对象之间的关系。每个数据集都包含DataRelations的关系集合,以查找和操纵相关表.DataSet属的关系性是一个DataRelation对象的集合,DataRelation对象表示这个数据集之间表之间的关系。要创建一个新的DataRelation,可以使用关系的添加()方法,该方法接收表示关系的字符串名和两个上(父列后跟子列)。比如:要创建客户表的CustomerID列和订单表的CustomerID列之间的关系,应使用下面的语法,把它们的关系命名为CustOrders。
DataRelation custOrderRel =, ds.Relations.Add (“CustOrders",, ds.Tables [“Customers"] .Columns (“CustomerID"), ds.Tables [“Orders"] .Columns [“CustomerID"]);
为了使用有关系,需要从一张表的行进入另一张表的关联行,这就是对关系导航。通常导航是指从一张表的父行进入另一张表的子行。那么假如给定父表中的一行,如何获取子表中与其对应的所有行呢?我们可以使用我们对象的GetChildRows()方法提取这些行。示例:一个顾客(客户)表包含有一个或多个订单(订单)表,建立这两个表之间的数据并提取数据的代码如下。
static void Main (string [], args) ,,,{ ,,,,,string connStr =, @" Data 源=\ SQLEXPRESS;, AttachDbFilename=& # 39; C: \ SQL Sever 2000年,Sample 数据库\ NORTHWND.MDF& # 39;; Integrated 安全=True; User 实例=true"; ,,,,,SqlConnection conn =, new SqlConnection (connStr); ,,,,,conn.Open (); ,,,,,//创建用于保存修改的数据的适配器 ,,,,,SqlDataAdapter adapter =, new SqlDataAdapter (“select  CustomerID, CompanyName 得到Customers",,康涅狄格州); ,,,,,SqlCommandBuilder builder =, new SqlCommandBuilder(适配器); ,,,,,//创建数据集 ,,,,,DataSet ds =, new 数据集(); ,,,,,//创建读取客户表的适配器 ,,,,,SqlDataAdapter custAdapter =, new SqlDataAdapter (“select  *,得到Customers",,康涅狄格州); ,,,,,//创建读取订单表的适配器 ,,,,,SqlDataAdapter orderAdapter =, new SqlDataAdapter (“select  *,得到Orders",,康涅狄格州); ,,,,,//填充两个表的数据并放到数据库中 ,,,,,custAdapter.Fill (ds,,“Customers"); ,,,,,orderAdapter.Fill (ds,,“Orders"); ,,,,,//创建两个表之间的关系 ,,,,,DataRelation custOrderRel =, ds.Relations.Add (“CustOrders",, ds.Tables [“Customers"] .Columns (“CustomerID"), ds.Tables [“Orders"] .Columns [“CustomerID"]); ,,,,,foreach (DataRow custRow 拷贝ds.Tables [“Customers"] .Rows) ,,,,,{ ,,,,,,,Console.WriteLine (“Customer  ID:,“, +, custRow (“CustomerID"), +,“\ tName:,“, +, custRow [“CompanyName"]); ,,,,,,,foreach (DataRow orderRow  custRow.GetChildRows拷贝(custOrderRel)) ,,,,,,,{ ,,,,,,,,,Console.WriteLine (“, Order ID:,“+ orderRow [“OrderID"]); ,,,,,,,} ,,,,,} ,,,,,conn.Close (); , ,,,,,Console.ReadKey (); , null null null null null null null null null null怎么在c#中将多张表存放到数据库中