C#使用DataSet Datatable更新数据库的三种实现方法


当前第2页 返回上一页

看看下面例子:

// Assumes connection is a valid SqlConnection.
SqlDataAdapter dataAdpater = new SqlDataAdapter(
"SELECT CategoryID, CategoryName FROM Categories", connection);

dataAdpater.UpdateCommand = new SqlCommand(
"UPDATE Categories SET CategoryName = @CategoryName " +
"WHERE CategoryID = @CategoryID" , connection);

dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");

SqlParameter parameter = dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryID", SqlDbType.Int);
parameter.SourceColumn = "CategoryID";
parameter.SourceVersion = DataRowVersion.Original;

DataSet dataSet = new DataSet();
dataAdpater.Fill(dataSet, "Categories");

DataRow row = dataSet.Tables["Categories"].Rows[0];
row ["CategoryName"] = "New Category";

dataAdpater.Update(dataSet, "Categories");

插入、更新和删除的排序

在许多情况下,以何种顺序向数据源发送通过 DataSet 作出的更改是相当重要的。
例如,如果已更新现有行的主键值并且添加了具有新主键值的新行,则务必要在处理插入之前处理更新。

可以使用 DataTable 的 Select 方法来返回仅引用具有特定 RowState 的 DataRow 数组。然后可以将返回的 DataRow 数组传递到 DataAdapter 的 Update 方法来处理已修改的行。通过指定要更新的行的子集,可以控制处理插入、更新和删除的顺序。

示例如下:

DataTable table = dataSet.Tables["Customers"];
// First process deletes.
adapter.Update(table.Select(null, null, DataViewRowState.Deleted));
// Next process updates.
adapter.Update(table.Select(null, null, 
DataViewRowState.ModifiedCurrent));
// Finally, process inserts.
adapter.Update(table.Select(null, null, DataViewRowState.Added));

三、使用sql语句更新

例如:

cmd = new OleDbCommand(string.Format(@"insert into worker(workerid,workername,password,phoneno) values ('{0}','{1}','{2}','{3}') ", textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text),oc);
oc.Open();
try
{
 int i = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{

}

性能的优劣及使用的情形,还未完全明白。

一般的,绑定bindingsource,用datatable绑定bindingsource (实质上绑定的是datatable。defaultview,同时可用到dataview的筛选功能,但是在筛选完后,filter要重置为null,否则出现的一直是经过筛选的数据)

其他:

使用builder 的作用:

OleDbCommandBuilder cb = new OleDbCommandBuilder(da);

这个主要是为了让C#自动为OleDbDataAdapter da生成相对应的DeleteCommand,UpdateCommand!

希望本文所述对大家的C#数据库程序设计有所帮助。


标签:SQLite

返回前面的内容

相关阅读 >>

go语言库系列之dotsql详解

Sqlite时间戳转时间语句(时间转时间戳)

ios中Sqlite使用教程

python使用Sqlite和excel操作进行数据分析

Sqlite 入门教程四  增删改查 有讲究

django数据库(Sqlite)基本入门使用教程

c#查询sqlserver数据库并返回单个值的方法

如何通过android stduio来编写一个完整的天气预报app

关于centos 7下Sqlite3找不到的问题解决

Sqlite 入门教程一 基本控制台(终端)命令

更多相关阅读请进入《Sqlite》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...