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();
}
}
;
}
查看全文
相关阅读:
解决hung_task_timeout_secs问题【方法待校验】
C++面向对象程序设计 学习心得
试水训练1
并查集
ACM儿童节热身训练
图论部分学习小结
ACM儿童节热身训练
堆及其应用学习小结
ACM本周小结
POJ-3273-Monthly Expense
原文地址:https://www.cnblogs.com/flaaash/p/1011124.html
最新文章
ruby语言里的self理解
SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
MSSQL Server 数据库备份还原常用SQL语句及注意
sql server 压缩备份数据库
npm 常用命令 查看版本、安装、卸载
MongoDB逻辑操作符$or, $and,$not,$nor
ORA-12154: TNS: 无法解析指定的连接标识符
PLSQL Developer12连接远程Oracle xe 11g
oracle执行先决条件检查失败的解决方法
通过SQL Server 2008 访问Oracle 10g
热门文章
win7(64位)Sql server 用T-sql读取本地数据文件dbf的数据文件
OpenShift实战(六):OpenShift日志监控EFK
OpenShift实战(五):OpenShift容器监控Metrics
OpenShift实战(四):OpenShift持久化存储Redis
解决MySQL数据库同步1236错误
OpenShift实战(三):OpenShift持久化存储Registry
OpenShift实战(二):OpenShift节点扩容
OpenShift实战(一):OpenShift安装
etcd: request cluster ID mismatch错误解决【只适用于新建etcd集群或无数据集群】
机房断电导致MySQL同步1594错误
Copyright © 2011-2022 走看看