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();
}
}
;
}
查看全文
相关阅读:
Cassandra 分页 读取数据
cassandra高级操作之索引、排序以及分页
cassandra 可视化工具
SpringBoot集成Cassandra参考文章
022 android studio 首次启动时默认的sdk安装路径
021 Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout)
020 本机Gradle目录 Could not find com.android.tools.build:gradle:4.1
019 Android Studio打开XML文件Design显示Waiting for build to finish
018 Could not download espresso-core-3.2.0.aar (androidx.test.espresso:espresso-core:3.2.0)
017 Android Studio is using the following JDK location when running Gradle:
原文地址:https://www.cnblogs.com/flaaash/p/1011124.html
最新文章
Attribute
ASP.NET Core中使用NLog记录日志
Net Core 读取json文件
ASPNetCore之请求处理管道和WebRoot(4)
ASPNetCore之中间件和请求处理管道(3)
[SpringMVC]
SpringMVC
javaweb 项目!号 解决方案
FileZilla 连接不上宝塔
[java]
热门文章
[java]
[java]
[java]
http状态码
Cassandra内部架构
Cassandra 处理客户端请求
Cassandra client的请求详解
Cassandra集群各个节点之间的通讯
Java连接Cassandra
cassandra的索引查询和排序
Copyright © 2011-2022 走看看