DataSet 中所作的更改发回数据源。

  当 OleDbDataAdapter 填充 DataSet 时,它将为返回的数据创建适当的表和列(如果它们尚不存在)。但是,除非 MissingSchemaAction 属性设置为 AddWithKey,否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema,让 OleDbDataAdapter 创建 DataSet 的架构,并在用数据填充它之前就将主键信息包括进去。有关更多信息,请参见 向 DataSet 添加现有约束。

  请注意,包括 MSDataShape 提供程序在内的某些 OLE DB 提供程序并不返回基表或主键信息。因此,OleDbDataAdapter 无法对任何已创建的 DataTable 正确设置 PrimaryKey 属性。在这些情况下,应该为 DataSet 中的表显式地指定主键。

  OleDbDataAdapter 还包括 SelectCommand、InsertCommand、DeleteCommand、UpdateCommand 和 TableMappings 属性,以便于数据的加载和更新。

  当创建 OleDbDataAdapter 的实例时,属性都设置为其初始值。有关这些值的列表,请参见 OleDbDataAdapter 构造函数。

  OleDbDataAdapter 充当 DataSet 和数据源之间的桥梁,用于检索和保存数据。OleDbDataAdapter 通过以下方法提供这个桥接器:使用 Fill 将数据从数据源加载到 DataSet 中,并使用 Update 将 DataSet 中所作的更改发回数据源。

  当 OleDbDataAdapter 填充 DataSet 时,它将为返回的数据创建适当的表和列(如果它们尚不存在)。但是,除非 MissingSchemaAction 属性设置为 AddWithKey,否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema,让 OleDbDataAdapter 创建 DataSet 的架构,并在用数据填充它之前就将主键信息包括进去。

  请注意,包括 MSDataShape 提供程序在内的某些 OLE DB 提供程序并不返回基表或主键信息。因此,OleDbDataAdapter 无法对任何已创建的 DataTable 正确设置 PrimaryKey 属性。在这些情况下,应该为 DataSet 中的表显式地指定主键。

  OleDbDataAdapter 还包括 SelectCommand、InsertCommand、DeleteCommand、UpdateCommand 和 TableMappings 属性,以便于数据的加载和更新。

public static OleDbDataAdapter CreateDataAdapter(string selectCommand,
    OleDbConnection connection)
{
    OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connection);

adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

// Create the Insert, Update and Delete commands.
    adapter.InsertCommand = new OleDbCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (?, ?)");

adapter.UpdateCommand = new OleDbCommand(
        "UPDATE Customers SET CustomerID = ?, CompanyName = ? " +
        "WHERE CustomerID = ?");

adapter.DeleteCommand = new OleDbCommand(
        "DELETE FROM Customers WHERE CustomerID = ?");

// Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID",
        OleDbType.Char, 5, "CustomerID");
    adapter.InsertCommand.Parameters.Add("@CompanyName",
        OleDbType.VarChar, 40, "CompanyName");

adapter.UpdateCommand.Parameters.Add("@CustomerID",
        OleDbType.Char, 5, "CustomerID");
    adapter.UpdateCommand.Parameters.Add("@CompanyName",
        OleDbType.VarChar, 40, "CompanyName");
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
        OleDbType.Char, 5, "CustomerID").SourceVersion =
        DataRowVersion.Original;

adapter.DeleteCommand.Parameters.Add("@CustomerID",
        OleDbType.Char, 5, "CustomerID").SourceVersion =
        DataRowVersion.Original;

return adapter;
}

using System;
using System.Data;
using System.Data.OleDb;

class Class1
{
    static void Main()
    {
    }

public static OleDbDataAdapter CreateDataAdapter(string selectCommand,
        OleDbConnection connection)
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connection);

adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

// Create the Insert, Update and Delete commands.
        adapter.InsertCommand = new OleDbCommand(
            "INSERT INTO Customers (CustomerID, CompanyName) " +
            "VALUES (?, ?)");

adapter.UpdateCommand = new OleDbCommand(
            "UPDATE Customers SET CustomerID = ?, CompanyName = ? " +
            "WHERE CustomerID = ?");

adapter.DeleteCommand = new OleDbCommand(
            "DELETE FROM Customers WHERE CustomerID = ?");

// Create the parameters.
        adapter.InsertCommand.Parameters.Add("@CustomerID",
            OleDbType.Char, 5, "CustomerID");
        adapter.InsertCommand.Parameters.Add("@CompanyName",
            OleDbType.VarChar, 40, "CompanyName");

adapter.UpdateCommand.Parameters.Add("@CustomerID",
            OleDbType.Char, 5, "CustomerID");
        adapter.UpdateCommand.Parameters.Add("@CompanyName",
            OleDbType.VarChar, 40, "CompanyName");
        adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
            OleDbType.Char, 5, "CustomerID").SourceVersion =
            DataRowVersion.Original;

adapter.DeleteCommand.Parameters.Add("@CustomerID",
            OleDbType.Char, 5, "CustomerID").SourceVersion =
            DataRowVersion.Original;

return adapter;
    }

OleDbDataAdapter 插入记录相关推荐

  1. SQL中获取刚插入记录时对应的自增列的值

    --创建数据库和表 create database MyDataBase use MyDataBase create table mytable ( id int identity(1,1), nam ...

  2. Mybatis获取插入记录的自增长ID

    转自:http://blog.csdn.net/tolcf/article/details/39035259 1.在Mybatis Mapper文件中添加属性"useGeneratedKey ...

  3. Mongodb源码分析--插入记录及索引B树构建

    在之前的一篇文章中,介绍了assembleResponse函数(位于instance.cpp第224行),它会根据op操作枚举类型来调用相应的crud操作,枚举类型定义如下:      enum Op ...

  4. [导入]C#向Sql Server中插入记录时单引号的处理

    ASP.Net种使用C#, 向CoreDB.myBBS表中插入记录值(Title, Content)[文章的标题和内容],由于Content, Title中可能包含单引号,直接使用sql的insert ...

  5. 表的插入、更新、删除、合并操作_4_同时往多个表插入记录

    同时往多个表插入记录 需求描述 需求:从dept表里插入数据到3张表,当loc是NEW YORK和BOSTON时向dept_east表中插入,当当loc是CHICAGO时向dept_mid表中插入,其 ...

  6. mysql插入实现存在更新_mysql 记录不存在时插入 记录存在则更新的实现方法

    mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问 ...

  7. 使用SQLite数据库存储数据(2)-向表中插入记录

    向表中插入记录 向数据表Notebook中添加一条新的记事日志,成功插入记录后,会显示一个提醒视图. - (IBAction)addNote:(id)sender { char *errMsg; co ...

  8. MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

    本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考. 案一:使用ignore ...

  9. 黄聪:mysql 存在该记录则更新,不存在则插入记录的sql

    一条mysql教程 存在该记录则更新,不存在则插入记录的sql INSERT table (auto_id, auto_name) values (1, 'yourname') ON DUPLICAT ...

最新文章

  1. 《社交网站界面设计(原书第2版)》——2.13 不要中断电子邮件
  2. weinre调试移动端页面
  3. MTM:matlab实现4主函数
  4. 在项目中缓存是如何使用的?
  5. 【BZOJ 4671】异或图 【斯特林反演】【线性基】【贝尔数复杂度】
  6. javascript设计模式--命令模式
  7. STL源码剖析学习二:空间配置器(allocator)
  8. ad20中怎么多选操作改层_在操作系统中CPU是怎么调度的
  9. 动态类型语言和静态类型语言
  10. The type javax.xml.rpc.ServiceException cannot be resolved.It is indirectly
  11. 从外行到外包,从手工测试到知名互联大厂测开 我经历了我这个年龄段不该经历的事情...
  12. ImageOptim 图片压缩工具
  13. R语言TCGA数据下载及处理biolinks包的学习与使用(一)数据下载
  14. 我想成为一个记计算机程序员英语作文,我的梦想高中英语作文带翻译
  15. MP3格式的音乐怎么转换成WAV格式?小编教你一招
  16. linux配置dhcp超级作用域,Linux DHCP服务器 超级作用域
  17. HTML的head,头头头头!!!
  18. 数据治理【数据安全管理】
  19. 浅谈跨站脚本攻击与防御
  20. 【百度地图API】JS版本的常见问题

热门文章

  1. springcloud服务注册中心eureka搭建
  2. 互联网日报 | 6月9日 星期三 | 腾讯发布长中短视频计划;阿里云新增两大海外数据中心;陌陌持续25个季度盈利...
  3. 互联网平台“直播+”赋能研究报告
  4. 一种基于随机投影的本地差分隐私高维数值型数据收集算法
  5. 作者:江荣(1984-),男,博士,国防科学技术大学助理研究员。
  6. 《大数据》2015年第3期“专题”——网络表示学习(上)
  7. 【数字逻辑设计】毛刺
  8. 用完全平方数填满指定区域(洛谷P2666题题解,Java语言描述)
  9. 【数据结构与算法】链式队列的Java实现
  10. (三)Clang/ LLVM编译流程简述