DataSet key points
In a typical multiple-tier implementation, the steps for creating and refreshing a DataSet, and in turn, updating the original data are to:
Build and fill each DataTable in a DataSet with data from a data source using a DataAdapter.
Change the data in individual DataTable objects by adding, updating, or deleting DataRow objects.
Invoke the GetChanges method to create a second DataSet that features only the changes to the data.
Call the Update method of the DataAdapter, passing the second DataSet as an argument.
Invoke the Merge method to merge the changes from the second DataSet into the first.
Invoke the AcceptChanges on the DataSet. Alternatively, invoke RejectChanges to cancel the changes.
DataRelation
ds.Tables.Add(table); ds.Tables.Add(detailsTableSaved); DataColumn[] pColumns = new DataColumn[] { table.Columns["DEPT_CODE"], table.Columns["CHECK_DATE"], table.Columns["INDEX_CODE"] }; DataColumn[] cColumns = new DataColumn[] { detailsTableSaved.Columns["DEPT_CODE"], detailsTableSaved.Columns["CHECK_DATE"], detailsTableSaved.Columns["INDEX_CODE"] }; DataRelation tDataRelation = new DataRelation("relation_Category_Product", pColumns, cColumns); ds.Relations.Add(tDataRelation);
Master and Detail Relationship
// Add data from the Customers table to the DataSet. SqlDataAdapter masterDataAdapter = new SqlDataAdapter("select * from Customers", connection); masterDataAdapter.Fill(data, "Customers"); // Add data from the Orders table to the DataSet. SqlDataAdapter detailsDataAdapter = new SqlDataAdapter("select * from Orders", connection); detailsDataAdapter.Fill(data, "Orders"); // Establish a relationship between the two tables. DataRelation relation = new DataRelation("CustomersOrders", data.Tables["Customers"].Columns["CustomerID"], data.Tables["Orders"].Columns["CustomerID"]); data.Relations.Add(relation); // Bind the master data connector to the Customers table. masterBindingSource.DataSource = data; masterBindingSource.DataMember = "Customers"; // Bind the details data connector to the master data connector, // using the DataRelation name to filter the information in the // details table based on the current row in the master table. detailsBindingSource.DataSource = masterBindingSource; detailsBindingSource.DataMember = "CustomersOrders";
Real Example:
private void btnSearch_Click(object sender, EventArgs e) { string a = "03-8月-2014";//dtpStart.Value.ToString("yyyy/MM/dd hh:mm:ss"); string b = "05-8月-2014";//dtpEnd.Value.ToString("yyyy-MM-dd hh:mm:ss"); gDtNursingIndexMasterResult = getTableData.getTableData("select * from NURSING_INDEX_CHECK_MASTER where CHECK_DATE Between '" + a + "' and '" + b + "'"); gDtNursingIndexMasterResult.Tables[0].TableName = "NURSING_INDEX_CHECK_MASTER"; gDtNursingIndexDetailResult = getTableData.getTableData("select * from NURSING_INDEX_CHECK_DETAIL where CHECK_DATE Between '" + a + "' and '" + b + "'"); gDtNursingIndexDetailResult.Tables[0].TableName = "NURSING_INDEX_CHECK_DETAIL"; gDtNursingIndexMasterResult.Merge(gDtNursingIndexDetailResult); DataTable tblMaster = gDtNursingIndexMasterResult.Tables[0].Copy(); DataTable tblDetail = gDtNursingIndexDetailResult.Tables[0].Copy(); gDsMasterDetail.Tables.Add(tblMaster); gDsMasterDetail.Tables.Add(tblDetail); DataColumn[] pColumns = new DataColumn[] { tblMaster.Columns["DEPT_CODE"], tblMaster.Columns["CHECK_DATE"], tblMaster.Columns["INDEX_CODE"] }; DataColumn[] cColumns = new DataColumn[] { tblDetail.Columns["DEPT_CODE"], tblDetail.Columns["CHECK_DATE"], tblDetail.Columns["INDEX_CODE"] }; DataRelation tDataRelation = new DataRelation("MasterDetail", pColumns, cColumns); gDsMasterDetail.Relations.Add(tDataRelation); gBsMaster.DataSource = gDsMasterDetail; gBsMaster.DataMember = "NURSING_INDEX_CHECK_MASTER"; gBsDetail.DataSource = gBsMaster; gBsDetail.DataMember = "MasterDetail"; bnbSearchResult.BindingSource = gBsMaster; cmbPatBedNo.DataBindings.Add("Text", gBsMaster, "BED_NO", true); }
Generating Typed DataSets Using xsd.exe
File.WriteAllText(file\employees.xsd, DataSet2.GetXmlSchema());
c:\> xsd.exe employees.xsd /d /l:cs /n:Employees.Data
c:\> csc /target:library Employees.cs
Write and Read DataSet
file.WriteAllText(file "employees.xml", employeesTable.GetXml();
DataSet key points的更多相关文章
- web.xml配置web中的key points(上)
一.定义 定义时注意:xml元素是区分大小写的. <web-app></web-app> 这些必须小写 二.url-pattern 1)url-pattern 的值必须以/或者 ...
- Three Key Points of Success 成功三要素
Everyone wants to be successful. Today I would like to share three simple key points of success. Num ...
- DataGridView key points
Simple Examples => http://csharp.net-informations.com/datagridview/csharp-datagridview-readonly-c ...
- TreeView Class Key Points
TreeView keep selected node highlighted public QualityCheck() { InitializeComponent(); //trvIndexNam ...
- OpenGL Shader Key Points (2)
1. Uniform 1.1. Uniform变量 不是所有的变量都是跟顶点一一对应的,如变换矩阵,光源位置等. Uniform变量可以在任何类型的shader中使用,但只能作为输入值,不能在sh ...
- OpenGL Shader Key Points (1)
1. Shader起步 1.1. 可编程管线 仅考虑Vertex shader和fragment shader: 1.2. Shader Object 在编译阶段生成,把shader源代码编译成 ...
- OpenGL Shader Key Points (3)
Shader和Program Program Link过后,Shader就可以从Program中Detach并删掉.这样是不是可以节省一点点显存呢? 链接到同一个program的vertex和frag ...
- web.xml配置web中的key points(下)
一.配置jsp页面 [jsp-config]中有两个子元素[taglib][jsp-property-group],注意,前者必须出现在后者之前. ①[taglib]替代jsp页面中taglib指令 ...
- key points & (QA) about RPKI
@1: Q: What does ROA look like?Since ROA means which ASes are allowed for originating routes to some ...
随机推荐
- 面向服务的体系结构(SOA)——(1)目标与核心概念
什么是SOA? 常常听到人们拿OOP和SOA一起来说事,诸如SOA是否可以代替面向对象(OOP)或者两者比哪个更加有优势?直接回答有难度举个例子可能显得答案更容易理解.小孩子问你该认真写作业呢?还是高 ...
- POJ 2482 Stars in Your Window 线段树扫描线
Stars in Your Window Description Fleeting time does not blur my memory of you. Can it really be 4 ...
- PHP文件处理类
/** * 文件读写类 * 读取时,支持跳过N个/行字符然后再读取M个/行字符 * 支持每次读取时使用回调函数 * * 示例: * $file = new File('a.txt', 'r'); * ...
- Android 贝塞尔曲线 折线图
1.贝塞尔曲线:http://baike.baidu.com/view/60154.htm,在这里理解什么是贝塞尔曲线 2.直接上图: 3.100多行代码就可以画出贝塞尔曲线,直接上代码 packag ...
- c#日记
//返回一个指定类型的对象,该对象的值等于指定对象的值 object obj1 = Convert.ChangeType(dw[findRowIndex][cna ...
- Xamarin.Android编译CPU类型选择方式
Xamarin.Android编译CPU类型选择方式 在Xamarin.Android编译的时候,默认提供了5种CPU类型供大家选择.它们分别为armeabi.armeabi-v7a.arm64-v8 ...
- 寒假D1 B
B - B Crawling in process... Crawling failed Time Limit:0MS Memory Limit:0KB 64bit IO Format ...
- asp.net 未能写入输出文件--“拒绝访问”的解决办法
概述 将网部署在IIS 7 上,访问本地磁盘路径的时候,提示"**文件拒绝访问". 解决办法 将需要访问的文件夹赋于IIS_IUSRS完全控制的权限即可,不用添加NET ...
- java 文件md5+字符串md5 实现
import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.digest.DigestUtils; impo ...
- css构造块级元素
css 1. 宽高width:数值;height:数值;也可用百分比!长高的设置不会被后代继承2. 背景(1)背景颜色background-color:颜色值;元素的背景颜色默认为transparen ...