C# ado.net DataSet使用(五)

一、填充dataset

 1  class Program
 2     {
 3         private static string constr = "server=.;database=northwnd;integrated security=sspi";
 4         static void Main(string[] args)
 5         {
 6             string sql = "select contactname,companyname from customers";
 7             using (SqlConnection con=new SqlConnection(constr))
 8             {
 9                 SqlDataAdapter sda = new SqlDataAdapter(sql, constr);
10                 DataSet ds = new DataSet();
11                 sda.Fill(ds, "Customers");
12                 foreach (DataRow row in ds.Tables["Customers"].Rows)
13                     Console.WriteLine("‘{0}‘ from {1}",
14                         row[0],
15                         row[1]);
16
17                 con.Close();
18             }
19             Console.ReadLine();
20         }
21     }

二、dataset主外键关系

 1 class Program
 2     {
 3         private static string constr = "server=.;database=northwnd;integrated security=sspi";
 4         static void Main(string[] args)
 5         {
 6             string select = "SELECT * FROM Products";
 7             string sel2 = "SELECT * FROM Categories";
 8             using (SqlConnection con=new SqlConnection(constr))
 9             {
10                 SqlDataAdapter da = new SqlDataAdapter(select, con);
11
12                 DataSet ds = new DataSet();
13
14
15                 ManufactureProductDataTable(ds);
16
17                 da.Fill(ds, "Products");
18
19                 foreach (DataRow row in ds.Tables["Products"].Rows)
20                     Console.WriteLine("‘{0}‘ from {1}",
21                         row[0],
22                         row[1]);
23
24                 SqlDataAdapter da2 = new SqlDataAdapter(sel2, con);
25
26
27                 ManufactureCategoryTable(ds);
28
29                 da2.Fill(ds, "Categories");
30
31                 AddForeignKeyConstraint(ds);
32
33                 con.Close();
34             }
35         }
36         public static void ManufactureProductDataTable(DataSet ds)
37         {
38             DataTable products = new DataTable("Products");
39             products.Columns.Add(new DataColumn("ProductID", typeof(int)));
40             products.Columns.Add(new DataColumn("ProductName", typeof(string)));
41             products.Columns.Add(new DataColumn("SupplierID", typeof(int)));
42             products.Columns.Add(new DataColumn("CategoryID", typeof(int)));
43             products.Columns.Add(new DataColumn("QuantityPerUnit", typeof(string)));
44             products.Columns.Add(new DataColumn("UnitPrice", typeof(decimal)));
45             products.Columns.Add(new DataColumn("UnitsInStock", typeof(short)));
46             products.Columns.Add(new DataColumn("UnitsOnOrder", typeof(short)));
47             products.Columns.Add(new DataColumn("ReorderLevel", typeof(short)));
48             products.Columns.Add(new DataColumn("Discontinued", typeof(bool)));
49
50             ManufacturePrimaryKey(products);
51
52             ds.Tables.Add(products);
53         }
54         public static void ManufacturePrimaryKey(DataTable dt)
55         {
56             DataColumn[] pk = new DataColumn[1];
57             pk[0] = dt.Columns["ProductID"];
58             dt.Constraints.Add(new UniqueConstraint("PK_Products", pk[0]));
59             dt.PrimaryKey = pk;
60         }
61         public static void ManufactureCategoryTable(DataSet ds)
62         {
63             DataTable categories = new DataTable("Categories");
64
65             categories.Columns.Add(new DataColumn("CategoryID", typeof(int)));
66             categories.Columns.Add(new DataColumn("CategoryName", typeof(string)));
67             categories.Columns.Add(new DataColumn("Description", typeof(string)));
68
69             categories.Constraints.Add(new UniqueConstraint("PK_Categories", categories.Columns["CategoryID"]));
70
71             categories.PrimaryKey = new DataColumn[1] { categories.Columns["CategoryID"] };
72
73             ds.Tables.Add(categories);
74
75         }
76         public static void AddForeignKeyConstraint(DataSet ds)
77         {
78             DataColumn parent = ds.Tables["Categories"].Columns["CategoryID"];
79             DataColumn child = ds.Tables["Products"].Columns["CategoryID"];
80
81             ForeignKeyConstraint fk = new ForeignKeyConstraint("FK_Product_CategoryID", parent, child);
82
83             fk.UpdateRule = Rule.Cascade;
84             fk.DeleteRule = Rule.SetNull;
85
86             // Create the constraint
87             // If this fails, you have a row in the products table with no associated category
88             ds.Tables["Products"].Constraints.Add(fk);
89
90         }
91     }

三、数据关联关系

 1    class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5
 6             DataSet ds = CreateDataSetWithRelationships();
 7
 8
 9             DataRow aBuilding = ds.Tables["Building"].NewRow();
10
11             aBuilding["BuildingID"] = 1;
12             aBuilding["Name"] = "The Lowry";
13
14             ds.Tables["Building"].Rows.Add(aBuilding);
15
16
17             DataRow aRoom = ds.Tables["Room"].NewRow();
18
19             aRoom["RoomID"] = 1;
20             aRoom["Name"] = "Reception";
21             aRoom["BuildingID"] = 1;
22
23             ds.Tables["Room"].Rows.Add(aRoom);
24
25
26             aRoom = ds.Tables["Room"].NewRow();
27             aRoom["RoomID"] = 2;
28             aRoom["Name"] = "The Modern Art Gallery";
29             aRoom["BuildingID"] = 1;
30
31             ds.Tables["Room"].Rows.Add(aRoom);
32
33
34             foreach (DataRow theBuilding in ds.Tables["Building"].Rows)
35             {
36                 DataRow[] children = theBuilding.GetChildRows("Rooms");
37                 int roomCount = children.Length;
38
39                 Console.WriteLine("Building {0} contains {1} room{2}",
40                     theBuilding["Name"],
41                     roomCount,
42                     roomCount > 1 ? "s" : "");
43
44
45                 foreach (DataRow theRoom in children)
46                     Console.WriteLine("Room: {0}", theRoom["Name"]);
47             }
48
49
50             foreach (DataRow theRoom in ds.Tables["Room"].Rows)
51             {
52                 DataRow[] parents = theRoom.GetParentRows("Rooms");
53
54                 foreach (DataRow theBuilding in parents)
55                     Console.WriteLine("Room {0} is contained in building {1}", theRoom["Name"], theBuilding["Name"]);
56             }
57         }
58         public static DataSet CreateDataSetWithRelationships()
59         {
60             DataSet ds = new DataSet("Relationships");
61
62             ds.Tables.Add(CreateBuildingTable());
63             ds.Tables.Add(CreateRoomTable());
64
65
66             ds.Relations.Add("Rooms", ds.Tables["Building"].Columns["BuildingID"], ds.Tables["Room"].Columns["BuildingID"]);
67
68             return ds;
69         }
70         public static DataTable CreateBuildingTable()
71         {
72             DataTable aBuilding = new DataTable("Building");
73             aBuilding.Columns.Add(new DataColumn("BuildingID", typeof(int)));
74             aBuilding.Columns.Add(new DataColumn("Name", typeof(string)));
75             aBuilding.Constraints.Add(new UniqueConstraint("PK_Building", aBuilding.Columns[0]));
76             aBuilding.PrimaryKey = new DataColumn[] { aBuilding.Columns[0] };
77
78             return aBuilding;
79         }
80
81         public static DataTable CreateRoomTable()
82         {
83             DataTable aRoom = new DataTable("Room");
84             aRoom.Columns.Add(new DataColumn("RoomID", typeof(int)));
85             aRoom.Columns.Add(new DataColumn("Name", typeof(string)));
86             aRoom.Columns.Add(new DataColumn("BuildingID", typeof(int)));
87             aRoom.Constraints.Add(new UniqueConstraint("PK_Room", aRoom.Columns[0]));
88             aRoom.PrimaryKey = new DataColumn[] { aRoom.Columns[0] };
89
90             return aRoom;
91         }
92     }

时间: 2024-10-10 12:46:00

C# ado.net DataSet使用(五)的相关文章

将Json数据转换为ADO.NET DataSet对象

Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Converter并不管用,而且也不一定能够满足项目需要.这里介绍另一种简单有效的方法,能够方便快速地将Json数据转为ADO.NET DataSet. 设计 事实上Newtonsoft.Json已经提供了一套完整的Json数据文档结构,Newtonsoft.Json.Linq命名空间下提供了这种文档结构的对象

C# ADO.NET中的五个主要对象<转>

Connection 物件   Connection 对象主要是开启程序和数据库之间的连结.没有利用连结对象将数据库打开,是无法从数据库中取得数据的.这个物件在ADO.NET 的最底层,我们可以自己产生这个对象,或是由其它的对象自动产生. Command 物件   Command 对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询.新增.修改.删除数据等指令,以及呼叫存在数据库中的预存程序等.这个对象是架构在Connection 对象上,也就是Command 对象是透过连结到数据源

ADO.NET中的五个主要对象

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

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

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

ado:SqlDataAdapter,dataset 与SqlDataReader的用法一

原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.

ADO.NET DataSet、DataTable、DataRow、DataView的学习

对于一个datatable中的数据进行嵌套查询判断某几列数据是否相同从而确定这条数据是否一样,并确定他重复的次数COUNT1字段. 例如: DataTable dt = new DataTable(); dt.Columns.Add("NAME", System.Type.GetType("System.String"));        dt.Columns.Add("SEX", System.Type.GetType("System

ADO.NET(Connection、DataSet)查询实例大全

ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据.之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口. 传统的资料处理主要是依赖相互连接的双层式模型.随着资料处理朝多层次架构发展,程式设计人员也逐渐改用中断连接的方式,使应用程序更具延展性(Scalability).ADO .NET3.0 中用于存取和管理资料的两个主要元件是 .NET Frame

ADO.NET的主要对象

ADO.NET主要分为五个对象: 1)Connection对象:用来连接程序与数据库.没有利用连接对象将数据库打开,是无法从数据库中取得数据的.Close和Dispose的区别,Close之后还可以用Open打开数据库,Dispose是释放资源,Dispose之后将不能再用Open. 2)Command对象:主要迎来对数据库发出一些指令,例如增删改查等指令,另外也可以调用数据库中的存储过程,这个对象时架构在Connection对象上,也就是Command对象是透过Connection连接到数据源

C# 学习笔记02 ADO.net

DataSet ado.net DataSet 的设计已明确指出它可独立于任何资料来源外而存取资料.因此,它可与多个不同的资料里来源搭配使用.与 XML 资料搭配使用,或用于管理应用程序的本机资料.DataSet 包含一或多个由资料列和资料行所组成的 DataTable 物件集合,以及 DataTable 物件中的主索引键.外部索引键.条件约束 (Constraint) 及资料的相关资讯. ado.net提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库.这些类库称为D