怎么在c#中将多张表存放到数据库中

  介绍

这篇文章给大家介绍怎么在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#中将多张表存放到数据库中