一、填充dataset

  class Program
{
private static string constr = "server=.;database=northwnd;integrated security=sspi";
static void Main(string[] args)
{
string sql = "select contactname,companyname from customers";
using (SqlConnection con=new SqlConnection(constr))
{
SqlDataAdapter sda = new SqlDataAdapter(sql, constr);
DataSet ds = new DataSet();
sda.Fill(ds, "Customers");
foreach (DataRow row in ds.Tables["Customers"].Rows)
Console.WriteLine("'{0}' from {1}",
row[],
row[]); con.Close();
}
Console.ReadLine();
}
}

二、dataset主外键关系

 class Program
{
private static string constr = "server=.;database=northwnd;integrated security=sspi";
static void Main(string[] args)
{
string select = "SELECT * FROM Products";
string sel2 = "SELECT * FROM Categories";
using (SqlConnection con=new SqlConnection(constr))
{
SqlDataAdapter da = new SqlDataAdapter(select, con); DataSet ds = new DataSet(); ManufactureProductDataTable(ds); da.Fill(ds, "Products"); foreach (DataRow row in ds.Tables["Products"].Rows)
Console.WriteLine("'{0}' from {1}",
row[],
row[]); SqlDataAdapter da2 = new SqlDataAdapter(sel2, con); ManufactureCategoryTable(ds); da2.Fill(ds, "Categories"); AddForeignKeyConstraint(ds); con.Close();
}
}
public static void ManufactureProductDataTable(DataSet ds)
{
DataTable products = new DataTable("Products");
products.Columns.Add(new DataColumn("ProductID", typeof(int)));
products.Columns.Add(new DataColumn("ProductName", typeof(string)));
products.Columns.Add(new DataColumn("SupplierID", typeof(int)));
products.Columns.Add(new DataColumn("CategoryID", typeof(int)));
products.Columns.Add(new DataColumn("QuantityPerUnit", typeof(string)));
products.Columns.Add(new DataColumn("UnitPrice", typeof(decimal)));
products.Columns.Add(new DataColumn("UnitsInStock", typeof(short)));
products.Columns.Add(new DataColumn("UnitsOnOrder", typeof(short)));
products.Columns.Add(new DataColumn("ReorderLevel", typeof(short)));
products.Columns.Add(new DataColumn("Discontinued", typeof(bool))); ManufacturePrimaryKey(products); ds.Tables.Add(products);
}
public static void ManufacturePrimaryKey(DataTable dt)
{
DataColumn[] pk = new DataColumn[];
pk[] = dt.Columns["ProductID"];
dt.Constraints.Add(new UniqueConstraint("PK_Products", pk[]));
dt.PrimaryKey = pk;
}
public static void ManufactureCategoryTable(DataSet ds)
{
DataTable categories = new DataTable("Categories"); categories.Columns.Add(new DataColumn("CategoryID", typeof(int)));
categories.Columns.Add(new DataColumn("CategoryName", typeof(string)));
categories.Columns.Add(new DataColumn("Description", typeof(string))); categories.Constraints.Add(new UniqueConstraint("PK_Categories", categories.Columns["CategoryID"])); categories.PrimaryKey = new DataColumn[] { categories.Columns["CategoryID"] }; ds.Tables.Add(categories); }
public static void AddForeignKeyConstraint(DataSet ds)
{
DataColumn parent = ds.Tables["Categories"].Columns["CategoryID"];
DataColumn child = ds.Tables["Products"].Columns["CategoryID"]; ForeignKeyConstraint fk = new ForeignKeyConstraint("FK_Product_CategoryID", parent, child); fk.UpdateRule = Rule.Cascade;
fk.DeleteRule = Rule.SetNull; // Create the constraint
// If this fails, you have a row in the products table with no associated category
ds.Tables["Products"].Constraints.Add(fk); }
}

三、数据关联关系

    class Program
{
static void Main(string[] args)
{ DataSet ds = CreateDataSetWithRelationships(); DataRow aBuilding = ds.Tables["Building"].NewRow(); aBuilding["BuildingID"] = ;
aBuilding["Name"] = "The Lowry"; ds.Tables["Building"].Rows.Add(aBuilding); DataRow aRoom = ds.Tables["Room"].NewRow(); aRoom["RoomID"] = ;
aRoom["Name"] = "Reception";
aRoom["BuildingID"] = ; ds.Tables["Room"].Rows.Add(aRoom); aRoom = ds.Tables["Room"].NewRow();
aRoom["RoomID"] = ;
aRoom["Name"] = "The Modern Art Gallery";
aRoom["BuildingID"] = ; ds.Tables["Room"].Rows.Add(aRoom); foreach (DataRow theBuilding in ds.Tables["Building"].Rows)
{
DataRow[] children = theBuilding.GetChildRows("Rooms");
int roomCount = children.Length; Console.WriteLine("Building {0} contains {1} room{2}",
theBuilding["Name"],
roomCount,
roomCount > ? "s" : ""); foreach (DataRow theRoom in children)
Console.WriteLine("Room: {0}", theRoom["Name"]);
} foreach (DataRow theRoom in ds.Tables["Room"].Rows)
{
DataRow[] parents = theRoom.GetParentRows("Rooms"); foreach (DataRow theBuilding in parents)
Console.WriteLine("Room {0} is contained in building {1}", theRoom["Name"], theBuilding["Name"]);
}
}
public static DataSet CreateDataSetWithRelationships()
{
DataSet ds = new DataSet("Relationships"); ds.Tables.Add(CreateBuildingTable());
ds.Tables.Add(CreateRoomTable()); ds.Relations.Add("Rooms", ds.Tables["Building"].Columns["BuildingID"], ds.Tables["Room"].Columns["BuildingID"]); return ds;
}
public static DataTable CreateBuildingTable()
{
DataTable aBuilding = new DataTable("Building");
aBuilding.Columns.Add(new DataColumn("BuildingID", typeof(int)));
aBuilding.Columns.Add(new DataColumn("Name", typeof(string)));
aBuilding.Constraints.Add(new UniqueConstraint("PK_Building", aBuilding.Columns[]));
aBuilding.PrimaryKey = new DataColumn[] { aBuilding.Columns[] }; return aBuilding;
} public static DataTable CreateRoomTable()
{
DataTable aRoom = new DataTable("Room");
aRoom.Columns.Add(new DataColumn("RoomID", typeof(int)));
aRoom.Columns.Add(new DataColumn("Name", typeof(string)));
aRoom.Columns.Add(new DataColumn("BuildingID", typeof(int)));
aRoom.Constraints.Add(new UniqueConstraint("PK_Room", aRoom.Columns[]));
aRoom.PrimaryKey = new DataColumn[] { aRoom.Columns[] }; return aRoom;
}
}

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

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

    Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Conver ...

  2. ADO.NET中的五大内置对象

    ADO.NET中的五大内置对象 学习链接:https://blog.csdn.net/wxr15732623310/article/details/51828677

  3. ADO.NET中的五个主要对象

    Connection:主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取得数据的.Close和Dispose的区别,Close以后还可以Open,Dispose以后则不 ...

  4. 【转】ADO.NET中的五个主要对象

    Connection 物件    Connection 对象主要是开启程序和数据库之间的连结.没有利用连结对象将数据库打开,是无法从数据库中取得数据的.这个物件在ADO.NET 的最底层,我们可以自己 ...

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

    Connection:主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取得数据的.Close和Dispose的区别,Close以后还可以Open,Dispose以后则不 ...

  6. ado.net DataSet

    一.概念 DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataS ...

  7. ADO.NET 中的五个主要对象

    Connection:主要用来开启程序和数据库的连接 Command:主要是用来对数据库发出一些指令,. DataAdapter;主要在数据源以及DataSet之间执行数据库的传输工作 DataSet ...

  8. ado:SqlDataAdapter,dataset 与SqlDataReader的用法一

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

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

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

随机推荐

  1. PTA(Advanced Level)1048.Find Coins

    Eva loves to collect coins from all over the universe, including some other planets like Mars. One d ...

  2. Redis3.2学习记录

    nosql 特征:访问量大,高并发,高可用,海量数据 redis3.2作用:减轻关系型数据库查询的压力安装:windows下解压即可使用,启动服务如:redis-server redis-config ...

  3. Numbers(CodeForces-128D)【思维/list】

    题目链接:https://vjudge.net/problem/CodeForces-128D 题意:给出一组数,要求将这些数排列成一个环,满足每相邻两个数的差值为1,问能否完成. 思路:先取出最小的 ...

  4. JAVA生成验证码代码

    生成base64格式图片验证码 /** * 验证码的候选内容 */ private char codeSequence[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', ...

  5. Java并发与多线程教程(3)

    Java中的锁 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂.因为锁(以及其它更高级的线程同步机制)是由synchronized同步 ...

  6. 关于ManualResetEvent的实例分析

    最近用WPF开发时使用多个定时器处理时需要实例化N多个DispatcherTimer,而且全部暴露在程序外部,显得很冗杂,例如下面的例子:用到的两个定时器就要实例化两个DispatcherTimer, ...

  7. 1、windows安装npm教程 --参考自https://www.cnblogs.com/jianguo221/p/11487532.html

    windows安装npm教程   1.在使用之前,先类掌握3个东西,明白它们是用来干什么的: npm:  nodejs 下的包管理器. webpack: 它主要用途是通过CommonJS 的语法把所有 ...

  8. Eclipse MyEclipse 反编译.class文件 myeclipse source not found

    首先,需要下载两个必须的插件包. 一个是:准备反编译需要的jad.exe 下载地址:http://varaneckas.com/jad/ 二个是:反编译编辑器net.sf.jadclipse_3.3. ...

  9. nexus 绑定负载均衡nginx反向代理后 遇到的https问题。

    1.今天搭建maven私服,下载安装好nexus运行后,通过IP可以直接访问,没有问题,如:http://123.123.123.123:8081 就可以进入主页面.没有任何问题. 2.但是他默认是h ...

  10. java中数组的定义

    1. 一维数组 int[] arr = new int[3];//需要一个容器,但是暂时不给具体的数值 int[] arr = new int[3]{1,2,3};//直接给定具体数值 int[] a ...