C# ado.net DataSet使用(五)
一、填充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使用(五)的更多相关文章
- 将Json数据转换为ADO.NET DataSet对象
Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Conver ...
- ADO.NET中的五大内置对象
ADO.NET中的五大内置对象 学习链接:https://blog.csdn.net/wxr15732623310/article/details/51828677
- ADO.NET中的五个主要对象
Connection:主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取得数据的.Close和Dispose的区别,Close以后还可以Open,Dispose以后则不 ...
- 【转】ADO.NET中的五个主要对象
Connection 物件 Connection 对象主要是开启程序和数据库之间的连结.没有利用连结对象将数据库打开,是无法从数据库中取得数据的.这个物件在ADO.NET 的最底层,我们可以自己 ...
- [转载]ADO.NET中的五个主要对象
Connection:主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取得数据的.Close和Dispose的区别,Close以后还可以Open,Dispose以后则不 ...
- ado.net DataSet
一.概念 DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataS ...
- ADO.NET 中的五个主要对象
Connection:主要用来开启程序和数据库的连接 Command:主要是用来对数据库发出一些指令,. DataAdapter;主要在数据源以及DataSet之间执行数据库的传输工作 DataSet ...
- ado:SqlDataAdapter,dataset 与SqlDataReader的用法一
原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- ADO.NET DataSet、DataTable、DataRow、DataView的学习
对于一个datatable中的数据进行嵌套查询判断某几列数据是否相同从而确定这条数据是否一样,并确定他重复的次数COUNT1字段. 例如: DataTable dt = new DataTable() ...
随机推荐
- 亿级Web系统搭建――单机到分布式集群 转载
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
- Django使用DataTables插件总结
Django使用Datatables插件总结 文章中的例子已上传至github 基本使用 Datatables插件是一款方便简单的展示数据的列表插件.关于基本使用,官方网站上的已介绍的很详细,这里我再 ...
- ubuntu 拨号上网
如果没有安装的用户,可以使用 sudo apt-get install pppoe pppoeconf 然后配置上网 sudo pppoeconf 最后,使用 sudo pon dsl-provide ...
- 为什么要使用 SPL中的 SplQueue实现队列
今天看php的SPL标准库部分里面涉及到数据结构其中有 SplQueue 来实现队列效果,但是我刚接触php的时候学习到的是 使用array的 array_push 和 array_pop 就可以实现 ...
- python以不同方式打印输出九九乘法表
参考:http://www.cnblogs.com/suiy-160428/p/5594389.htmlpython输出 9*9 乘法口诀表 矩形输出九九乘法表: for i in range(1,1 ...
- 故事板(StoryBoards)和动画(Animations)
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations) 正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Blend ...
- Log4net采用外部配置文件和多记录器的方法
1) 创建配置文件,可以放在任意位置,名字可以任意的xml文件 例如,文件名 Log.Config.xml,内容如下 <?xml version="1.0" encoding ...
- winForm入门学习
Windows窗体 属性: name:对象的名称 windowsState:初始化窗体的大小,Normal,Minimized,Maximized StartPosition:窗体起始位置,Manua ...
- 适配方案(五)适配的基础知识之设备像素比 dpr 与 1px 物理像素
设备像素比 dpr 与 1px 物理像素 物理像素(physical pixel) 手机屏幕上显示的最小单元,该最小单元具有颜色及亮度的属性可供设置,iphone6.7.8 为:750 * 1334, ...
- LeetCode:196.删除重复的电子邮箱
题目链接:https://leetcode-cn.com/problems/delete-duplicate-emails/ 题目 编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱 ...