这个数据库交互的类我是以单例模式实现的,"_"开头的都是已经生成唯一的实例。

旧数据用sql语句查询出的dataTable,发生改变后dataTable(增加,删除,修改),增改是利用OracleCommandBuilder自身Update(table),它可以实现增加和修改(需要主键)。

删除是利用旧datable与修改后的datable之间取交差,获取需要删除的数据。

/// <summary>
/// datatable与数据库的增删改的实现
/// </summary>
/// <param name="table"></param>
/// <param name="CommandText">sql语句</param>
/// <param name="key"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public int UpdateAndDeleteTable(DataTable table, string CommandText,string key,string tableName)
{
//更新和新增
OracleCommandBuilder ocb = new OracleCommandBuilder(_oracleDataAdapter);
_oracleDataAdapter.SelectCommand.CommandText = CommandText;
_oracleDataAdapter.InsertCommand = ocb.GetInsertCommand();
int updete=_oracleDataAdapter.Update(table);
//删除:差集删除
DataTable oldTable = this.GetDataTable(CommandText);
var query = oldTable.AsEnumerable().Except(table.AsEnumerable(), DataRowComparer.Default);
if (query.Count()==0)
{
return updete;
}
StringBuilder sb = new StringBuilder();
sb.Append($"delete {tableName} where {key} in(");

foreach (var row in query)
{
sb.Append("'"+row[key].ToString()+"',");
}
sb.Remove(sb.Length - 1, 1);
sb.Append(")");
string sql = sb.ToString();
int delete = ExcuteSql(sql);
return updete+ delete;
}

转载于:https://www.cnblogs.com/wxdgis/p/8270482.html

利用OracleCommandBuilder实现 datatable与数据库的增删改相关推荐

  1. 利用koa实现mongodb数据库的增删改查

    概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...

  2. 欢迎来到Jsp编程课时十二——今天实现的目标是。@1将数据库的数据发送到浏览器。@2利用浏览器实现对数据库的增删改查操作。@3理解MVC三层架构的定义。

    完成项目会有以下的效果. JSP第二十课:Mvc+Mysql+Servlect+Jsp实现在浏览器上对数据库的增删改查. MVC全名是Model View Controller, 是 @@1模型(mo ...

  3. 封装对MongoDB数据库的增删改查访问方法(基于MongoDB官方发布的C#驱动)

    本文利用MongoDB官方发布的C#驱动,封装了对MongoDB数据库的增删改查访问方法. 先用官方提供的mongo-csharp-driver ,当前版本为1.7.0.4714 编写数据库访问帮助类 ...

  4. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  5. visual studio2019连接SQL Server数据库,增删改查详细教程(C#代码)

    visual studio2019连接SQL Server数据库,增删改查详细教程(C#代码) 工具: 1.Visual Studio 2019 2.SQL Server数据库(我使用的2008) 操 ...

  6. Java利用反射封装DBUtil,mysql万能增删改查工具类,附源码

    Java利用反射封装DBUtil,mysql万能增删改查工具类,附源码 等有时间再慢慢写代码注释吧,先把源码放出来.文章最后有整个项目的压缩包. ps:拓展 Java 原生MySQL JDBC 插入后 ...

  7. MySQL(1) 数据库的增删改查

    MySQL(1) 数据库的增删改查 # 如果存在删除 drop database if exists kh69; # 创建数据库 create database kh69; # 进库 use kh69 ...

  8. adodb mysql.inc.php,php adodb操作mysql数据库示例(增删改查)

    php adodb操作mysql数据库示例(增删改查) 发布于 2014-10-05 08:16:18 | 113 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: H ...

  9. 如何使用mybatis框架对数据库进行增删改查?

    1.配置mybatis 1.1 引入依赖 mybatis依赖 <dependency><groupId>org.mybatis</groupId><artif ...

最新文章

  1. mysql中如何设置过滤器_mysql 如何动态修改复制过滤器
  2. 限免!百名AI大咖,20大技术和行业论坛,不可错过的开发者嘉年华
  3. python 装饰器 参数-[Python]写个带参数的装饰器
  4. 谈mvc开发中gzip压缩的应用
  5. 向MySQL数据库中插入数据,sql语句没问题,但插入失败也不报错?
  6. 在cshtml中显示FCKeditor编辑器控件
  7. 你竟然没用 Nuget 构建项目?
  8. TMS320DM642学习----第一篇(硬件连接)
  9. java 二分搜索获得大于目标数的第一位_程序员数据结构算法编程,二分查找搜索算法的原理与应用介绍!...
  10. 使用Advanced Installer将.exe程序重新封装为.msi程序
  11. matlab里path,Matlab设置永久path
  12. https 慢_dba+开源工具:可视化分析MongoDB慢查询日志
  13. apache kafka系列之server.properties配置文件参数说明
  14. scala上界_Scala方差,上界和下界
  15. linux 修改自动联网的配置说明
  16. 如何以最好的方式实现游戏关卡
  17. DCC2020:VVC帧内预测中基于梯度的CU划分早停止
  18. 资料:《大学英语》精读修订版(全六册)原文及全文翻译
  19. 用户画像的定义及构建方法
  20. C/C++ 常用程序库

热门文章

  1. java 栈内存结构_JVM内存结构概念解析
  2. JAVA爬虫https_java爬虫问题一:解决使用htmlunit 时候ssl认证失败问题
  3. import pymysql 没有模块_小白详细的 python 模块的运用
  4. 【云原生AI】Fluid + JindoFS 助力微博海量小文件模型训练速度提升 18 倍
  5. java 连接linux失败,Jenkins连接Linux失败
  6. bp神经网络pid控制_文章推荐 | BP神经网络PID控制器在无人机编队飞行中的应用...
  7. java中websocket_Java中使用webSocket
  8. java 容器 线程_JAVA多线程并发容器
  9. c打开指定路径文件_C++ 读取指定路径下所有的文件 (C++ get the list of files in a directory)...
  10. 有关matlab拟合工具箱的使用