zoukankan
html css js c++ java
DataAdapter数据集DataSet和数据库的同步(1):DataRowVersion,Mapping
/**/
/*
--===------------------------------------------===---
DataAdapter的数据映射:表和列映射
许明会 2007年12月22日 22:18:09
DataSet包含DataTable类型的集合Tables。
每个DataTable又包含DataRow类型的Rows集合,包含DataColumn类型的Columns集合,还有表间关系的Relations集合。
DataTable dataTable = dataSet.Tables[0];
DataRow dataRow = dataSet.Tables[0].Rows[0];
取得表0的0行0列值:
object columnValue = dataSet.Tables[0].Rows[0][0];
//--===------------------------------------------===---
DataRowVersion的变化:
DataRow的BeginEdit方法调用后,Current,Proposed值可用。
DataRow的CancelEdit方法调用后,Proposed值被删除。
DataRow的EndEdit方法调用后,Proposed值变成Current值。
DataRow的AcceptChanges调用后,Original值修改为Current值。
DataRow的RejectChanges调用后,Proposed值被丢弃,版本变成Current。
DataTable的AcceptChanges调用后,Original值改为Current值。
//--===------------------------------------------===---
数据适配器DataAdapter的方法:
1.Fill:把数据从数据源加载到数据集DataSet中。
2.Update:把数据从数据集加载到数据源中。
//--===------------------------------------------===---
Fill方法:
1.Fill(DataSet)
2.Fill(DataTable)
3.Fill(DataSet,tableName);
4.Fill(DataTable,DataReader):用指定的DataReader填充数据表
★默认情况下,调用DataAdapter的Fill方法时,除了会填充DataSet之外,还会自动调用DataSet.AcceptChanges,调用后所有的行状态都不是“新改变的”,此时Original和Current的值是一样的。
★如果希望从多个数据源填充一个DataSet,再将其写回另外一个数据存储,这时要把DataAdapter的属性AcceptChangesDuringFill设置为false,以便让结果行表现为新添加的行。
Update方法:
1.Update(DataSet):根据指定的数据集中的数据表更新数据源
2.Update(DataTable):根据指定的数据表更新数据源
3.Update(dataRows):根据指定的数据行数组更新数据源
当调用Update方法时,DataAdapter将分析已作出的更改并执行相应的命令(Insert,Update,Delete). 当DataAdapter遇到DataRow的更改时,他将使用InsertCommand, UpdateCommand, DeleteCommand来处理更爱. 如此就可以通过在设计时制定命令语法并在可能时通过使用存储过程来尽量提高Ado.net应用程序的性能. 在调用Update命令前,保证用于更改数据的3个Command存在,否则将引发异常.
--===------------------------------------------===---
*/
using
System;
using
System.Data;
using
System.Data.SqlClient;
namespace
xumh
{
public
class
runMyApp
{
static
void
Main()
{
SqlConnection cn
=
new
SqlConnection(
@"
server=.; database=northwind; integrated security=true
"
);
SqlDataAdapter da
=
new
SqlDataAdapter(
"
select firstname,lastname,title from employees
"
,cn);
DataSet dsEmployees
=
new
DataSet();
try
{
cn.Open();
//
数据映射,TableMapping.Add 的参数1,要和DbAdapter.Fill 的参数2一致;或者Add方法参数1设为"Table",Fill方法参数2省略。
da.TableMappings.Add(
"
Employees
"
,
"
员工表
"
);
da.TableMappings[
0
].ColumnMappings.Add(
"
firstname
"
,
"
姓
"
);
da.TableMappings[
0
].ColumnMappings.Add(
"
lastname
"
,
"
名
"
);
da.TableMappings[
0
].ColumnMappings.Add(
"
title
"
,
"
职位
"
);
da.Fill(dsEmployees,
"
Employees
"
);
//
Employees和上面表映射对应,不能省略
//
输出数据:ColumnMappings集合实现Field名称映射;将ColumnMappings对象添加到TableMappings对象;将TableMappings对象挂到DbDataAdapter。
foreach
(DataRow row
in
dsEmployees.Tables[
0
].Rows)
Console.WriteLine(
"
{0}\t{1}\t{2}
"
,row[
"
姓
"
],row[
"
名
"
],row[
"
职位
"
]);
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
cn.Close();
}
}
}
;
}
查看全文
相关阅读:
嵌入式GUI FTK介绍(7)主题
嵌入式GUI FTK介绍(2)两个小应用程序
嵌入式GUI FTK介绍(8)编译/运行PC模拟版本
嵌入式GUI FTK介绍(5)在多平台上运行
嵌入式GUI FTK介绍(4)脚本语言绑定
嵌入式GUI FTK介绍(3)XML界面描述语言
活动图
ASP.NET程序中常用的三十三种代码
Server的Transfer和Response的Redirect (转)
.net 点击刷新验证码问题
原文地址:https://www.cnblogs.com/flaaash/p/1011122.html
最新文章
Xcode9 打包ipa(导出ipa测试包)时总是意外退出
iOS 开发实用工具
Mac git 终端使用
检测接口数据 Charles使用
OC 线程操作2 NSThread
OC 线程操作1 pthread
How to "round" numbers
计算机硬件英汉对照
SQL Server 数据库操作实用技巧锦集
How to get rid of the report scaling message the lazy way
热门文章
SQL Server中各个系统表的作用(转载)
SQL SERVER与ACCESS,EXCEL的数据转换
Color code and RGB values
当你扛不住的时候就读一遍........
SQL Server数据库管理常用SQL和TSQL语句
口语中无比奏效的简短赞美
理解事务处理、事务处理的隔离级别,和使用JDBC进行事务处
嵌入式GUI FTK介绍(6)特性
broncho a1 hack指南-移植Android2.0
Argument list too long从何而来
Copyright © 2011-2022 走看看