一、填充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. JavaSE基础(四)--Java基本数据类型

    Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...

  2. [Agc029D]Grid game_贪心

    Grid game 题目链接:https://atcoder.jp/contests/agc029/tasks/agc029_d 数据范围:略. 题解: 方法肯定很简单,就是找一处障碍待在他上面就好. ...

  3. windows 修改Administrator管理员账户名

      用[Win+R]组合键命令打开[运行]界面,输入[gpedit.msc],按[回车键]或[鼠标左键]单击[确定]按钮:   在弹出的[本地组策略编辑器]对话框中,依次[鼠标左键]点击打开:[计算机 ...

  4. oracle建表字段包含关键字注意事项

    SQL建表时最好不要把表定义成关键字字段 1 若不小心把表定义成关键字了,比如option, desc等等,oracle版本查询会有问题,短期内无法修改字段名称的,暂时用字段名+双引号解决: SELE ...

  5. LeetCode. 矩阵中的最长递增路径

    题目要求: 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即不允许环绕). 示例: 输入: nums = [ ...

  6. Linux 安装MySQL流程

    1. yum -y install wegt 2. yum -y install vim 3. 下载MySQL的repo源 1. wget http://repo.mysql.com/mysql-co ...

  7. C#学习资料

    http://www.runoob.com/csharp/csharp-delegate.html

  8. [转载]Pytorch详解NLLLoss和CrossEntropyLoss

    [转载]Pytorch详解NLLLoss和CrossEntropyLoss 来源:https://blog.csdn.net/qq_22210253/article/details/85229988 ...

  9. js之数据类型(对象类型——单体内置对象——Math)

    Math是一个内置对象,它具有数学常数和函数的属性和方法.Math对象用于执行数学任务,和其它对象不同,Math只是一个静态对象并没有Math()构造函数,实际上,Math()只是一个由js设置的对象 ...

  10. LEANGOO卡片

    转自:https://www.leangoo.com/leangoo_guide/leangoo_cards.html#toggle-id-10 Leangoo的卡片可以是需求.目标.任务.问题.缺陷 ...