zoukankan
html css js c++ java
DataAdapter数据集DataSet和数据库的同步(2):使用DataAdapter来更新数据集
/**/
/*
--===------------------------------------------===---
使用DataAdapter来更新数据集
//--===------------------------------------------===---
数据适配器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存在,否则将引发异常.
许明会 2007年12月22日 23:27:31
--===------------------------------------------===---
*/
using
System;
using
System.Data;
using
System.Data.SqlClient;
namespace
xumh
{
public
class
runMyApp
{
static
void
ShowTable(DataTable dataTable)
{
foreach
(DataRow row
in
dataTable.Rows)
{
for
(
int
i
=
0
;i
<
dataTable.Columns.Count; i
++
)
Console.Write(
"
{0}\t
"
,row[i]);
Console.WriteLine();
}
}
//
static
void
UpdateEmployees()
{
SqlConnection cn
=
new
SqlConnection(
@"
server=.; database=northwind; integrated security=true
"
);
//
显示原始数据
SqlDataAdapter da
=
new
SqlDataAdapter(
"
select employeeid,firstname,lastname,title from employees
"
,cn);
DataSet dsEmployees
=
new
DataSet();
da.Fill(dsEmployees);
ShowTable(dsEmployees.Tables[
0
]);
//
准备UpdateCommand
dsEmployees.Tables.Clear();
da.UpdateCommand
=
new
SqlCommand(
"
update Employees set firstname = @firstname where EmployeeID=@EmployeeID
"
,cn);
da.UpdateCommand.Parameters.Add(
"
@firstname
"
, SqlDbType.NVarChar,
10
,
"
firstName
"
);
SqlParameter emID
=
da.UpdateCommand.Parameters.Add(
"
@EmployeeID
"
,SqlDbType.Int);
emID.SourceColumn
=
"
EmployeeID
"
;
emID.SourceVersion
=
DataRowVersion.Original;
//
填充数据集,更改数据集,提交数据集:可观察各行的RowVersion
da.Fill(dsEmployees,
"
Employees
"
);
dsEmployees.Tables[
"
Employees
"
].Rows[
0
][
"
firstname
"
]
=
"
Nancy
"
;
//
System.DateTime.Now.ToString();
da.Update(dsEmployees,
"
Employees
"
);
//
重新显示数据
ShowTable(dsEmployees.Tables[
0
]);
}
//
static
void
InsertEmployees()
{
SqlConnection cn
=
new
SqlConnection(
@"
server=.; database=northwind; integrated security=true
"
);
//
显示原始数据
SqlDataAdapter da
=
new
SqlDataAdapter(
"
select employeeid,firstname,lastname,title from employees
"
,cn);
DataSet dsEmployees
=
new
DataSet();
da.Fill(dsEmployees);
ShowTable(dsEmployees.Tables[
0
]);
//
准备要InsertCommand
da.InsertCommand
=
new
SqlCommand(
"
insert into Employees(firstname,lastname) values(@firstname,@lastname)
"
,cn);
da.InsertCommand.Parameters.Add(
"
@firstname
"
,SqlDbType.NVarChar,
10
,
"
FirstName
"
);
da.InsertCommand.Parameters.Add(
"
@lastname
"
,SqlDbType.NVarChar,
20
,
"
lastname
"
);
//
填充数据集
DataRow row
=
dsEmployees.Tables[
0
].NewRow();
row[
"
firstname
"
]
=
"
Xu
"
;
row[
"
lastname
"
]
=
"
Minghui
"
;
dsEmployees.Tables[
0
].Rows.Add(row);
da.Update(dsEmployees);
//
显示新数据
ShowTable(dsEmployees.Tables[
0
]);
}
//
static
void
Main()
{
//
UpdateEmployees();
InsertEmployees();
}
}
;
}
查看全文
相关阅读:
新增图表控件
chrome无法登陆账号,显示操作超时的解决方案
VC调用Delphi对象接口
MyBatis学习-映射文件标签篇(select、resultMap)
MyBatis学习-入门篇
Spring 后置处理器 PropertyPlaceholderConfigurer 类(引用外部文件)
Spring 创建 IOC 容器时加载配置文件的几种方式
Spring的监听器ContextLoaderListener
通用分页工具类
单例模式的几种写法
原文地址:https://www.cnblogs.com/flaaash/p/1011124.html
最新文章
Chrome一直提示“adobe flash player 因过期而遭阻止” ,如何解决?
PHP分页类分享
javascript经典小游戏代码集合
URL的井号
MyEclipse文本对比界面样式修改
线程安全的单例模式的几种实现方法分享
HTTPS握手过程
Http协议三次握手过程
JNDI(Java Naming and Directory Interface,Java命名和目录接口)
Builder设计模式--改善构造器多个参数时可显著改善可读性
热门文章
java.lang.IllegalArgumentException: Page directive: invalid value for import
阻止MyEclipse启动项目时自动跳转的debug视图
使用extjs做的一个简单grid
安卓中圆角背景图被拉伸的解决方案——.9.png
Eclipse多平台编译(armeabi, armeabi-v7a, x86, mips)
fatal error C1083:无法打开包括文件:“stdint.h”: No such file or directory解决方案
Google chrome浏览器中通过扩展调用本地应用程序以及和程序相互通讯(C++)
log4cpp退出时内存泄露的修复方案
VS2012编译log4cpp1.1.1版本
发生Windows无法访问远程共享的解决办法
Copyright © 2011-2022 走看看