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() ...
随机推荐
- kafka producer interceptor拦截器(五)
producer在发送数据时,会经过拦截器和序列化,最后到达相应的分区.在经过拦截器时,我们可以对发送的数据做进步的处理. 要正确的使用拦截器需要以下步骤: 1.实现拦截器ProducerInterc ...
- Oracle数据库应用系统结构
在安装.部署oracle数据库软件时,需要根据不同应用结构(即硬件平台.操作系统平台)采用不同的方法(基本安装.高级安装),下面介绍几种常见的应用结构. 1.应用系统的数据接口 客户端应用程序或应用服 ...
- 【AtCoder】CODE FESTIVAL 2016 qual C
CODE FESTIVAL 2016 qual C A - CF -- #include <bits/stdc++.h> #define fi first #define se secon ...
- git太慢用码云
克隆完之后,我们要对这个仓库进行下修改,将仓库地址修改为git的那个 git remote set-url origin xxxx.git 经过以上操作,这个仓库就和从github上克隆下来的一模一样
- oracle_多表查询02
多表查询 select * from BONUS; select * from DEPT; select * from EMP; select * from SALGRADE; BONUS表 ENAM ...
- eclipse 创建聚合maven项目(转)
转自https://blog.csdn.net/u013239111/article/details/76560167 以前我们搭建项目时,通常是吧pojo.dao.service.配置文件等都放在一 ...
- java八大排序代码
import java.util.ArrayList;import java.util.List; public class FastSort { public static void main(St ...
- vi学习笔记
dd 删除一行 de删除光标后面的单词 o向下插入一行 O向上插入一行 y复制 yy复制一行 ye复制光标后面的单词 p粘贴 == 代码自动布局 批量注释 ctrl + v , 输入大写I, 选 ...
- mydql 函数和存储过程
存储过程 CREATE PROCEDURE getUid (IN phone CHAR(11), OUT uid INT ) READS SQL DATA BEGIN select u.id from ...
- 红外 NEC编码
它是一种电磁波,可以实现数据的无线传输 它的波长范围为760nm ~ 1mm,不为人眼所见 紫外光波长为10-400nm 红外与蓝牙 红外:对准.直接.0-10米,单对单 蓝牙:10米左右,加强信号后 ...