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() ...
随机推荐
- 在UPW中使用VLC解码媒体
VLC支持的格式很全,学会如何使用后,完全可以自己给自己写一个简单的万能播放器了. 源码来自github:https://github.com/kakone/VLC.MediaElement.git( ...
- lua数据类型的的操作(三)
上一章我们学习了lua的数据类型,以及语法的定义,今天我们学习lua的数据类型操作,其实就是lua库一些api的操作,遇到对数据类型处理时,可以根据lua库提供的操作来实现. 一.字符串操作 1.字符 ...
- python 爬取文章后存储excel 以及csv
import requests from bs4 import BeautifulSoup import random import openpyxl xls=openpyxl.Workbook() ...
- php 处理数字为金钱格式
number_format(需要转换的数字,保留小数个数,小数点符号,每三位的分隔符) echo number_format("1000000")."<br> ...
- 怎样理解 display:none 和 visibility:hidden
1. display: none会使元素节点 "消失" , 就像 死亡后灰飞烟灭了. 它是不占位置的. 2. visibility: hidden会使元素节点 "隐藏&q ...
- HTML练习二--动态加载轮播图片
接上一篇https://www.cnblogs.com/shuaimeng/p/11106655.html demo下载: https://pan.baidu.com/s/1dhvzHwTHKiguy ...
- Vue中断axios请求-切换页面+重复请求
切换页面时中断 一.概述 在Vue单页面开发过程中,遇到这样的情况,当我切换页面时,由于上一页面请求执行时间长,切换到该页面时,还未执行完,这时那个请求仍会继续执行直到请求结束,此时将会影响页面性能, ...
- 销售订单(SO)-API-更新销售订单
更新销售订单和创建销售订单差不多,调用的API相同,只是传入的时候标识不一样:operation := oe_globals.g_opr_update 示例代码如下: PROCEDURE update ...
- JAVA 1.6锁状态转换
JVM 学不好 并发就学不好 面试问题 Object 有哪些方法 syn实现过程 wait notify 为什么要设计到Object上而不是接口?虽然可以 但是面向对象的思想 子类 object.wa ...
- Spring cloud实战——服务提供者
目录讲解: 一.服务提供者与服务消费者的概念 二.编写一个服务提供者的测试类(code) 1.1. 使用微服务构建的是分布式系统,微服务之间通过网络进行通信.我们使用微服务提供者与服务消费者来描述微服 ...