博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DataAdapter.update更新无任何反应的原因
阅读量:6160 次
发布时间:2019-06-21

本文共 1227 字,大约阅读时间需要 4 分钟。

public bool UpdateTable(DataTable srcTable, string tableName)

        {
            bool isok = false;
            try
            {
                foreach (DataRow myRow in srcTable.Rows)
                {
                    foreach (DataColumn myColumn in srcTable.Columns)
                    {
                        Console.Write(myRow[myColumn] + "|" + myRow[myColumn].GetType() + "|");
                    }
                    Console.WriteLine();
                }
                command.CommandText = "SELECT * FROM " + tableName;
                SQLiteDataAdapter oda = new SQLiteDataAdapter(command);
                SQLiteCommandBuilder ocb = new SQLiteCommandBuilder(oda);
                oda.SelectCommand = command;
                oda.InsertCommand = ocb.GetInsertCommand();
                oda.DeleteCommand = ocb.GetDeleteCommand();
                oda.UpdateCommand = ocb.GetUpdateCommand();
                oda.Update(srcTable);
                isok = true;
            }
            catch (Exception ex)
            {}
            return isok;
        }

上面的这段代码用一个datagridview读取数据然后修改,然后更新,能够成功。

但是自定义一个datatable,然后想用它来将datatable中的数据写入一个表,就会出问题。

 

这两天同样在处理这个问题,搞了半天,最终发现了,第二种情况不能更新的原因:

oda.Update(srcTable);   问题就在这个方法中
ado.net中的DataAdapter 的Update(datatable)方法都是一种处理流程,获取datatable中的变化记录(增删改)然后分别对增、删、改的每一条记录进行插入、删除、修改。
当datatable不是从数据源表获取而来,而是自定义的(从其他数据源获取,或者干脆手动建的,从空的datagridview修改后得到的),就没有上面的相对的删除和修改的概念了(也许有吧,但是这个增加、删除、修改中有些是不被update接受的)。
update设计的时候就是从最优的角度出发的,只更新发生变化的部分。对自定义的datatable,update把它当作你要写入的数据源中读出的数据表来处理,使用的时候就会出 无更新,只更新插入的,更新失败等 问题。

转载于:https://www.cnblogs.com/fuquan/p/3749453.html

你可能感兴趣的文章
在Linux下编译安装Apache2(2)
查看>>
Method Swizzling 处理一类简单的崩溃
查看>>
AngularJS学习!
查看>>
在Eclipse中搭建Python Django
查看>>
struts国际化
查看>>
Laravel 5.0 - Middleware (中间件)
查看>>
文件特殊权限及facl
查看>>
我的友情链接
查看>>
Android按两次返回键退出应用
查看>>
第一章:认识Redhat Linux
查看>>
文本查看指令
查看>>
我的友情链接
查看>>
android开源项目框架大全:《IT蓝豹》
查看>>
boost库
查看>>
LeetCode——Longest Consecutive Sequence
查看>>
Python对字典(directory)按key和value排序
查看>>
Azure: 给 ubuntu 虚机挂载数据盘
查看>>
工作总结 @{var sas = String.Format("{0:yyyy-MM-dd}", Model.DemandTime.GetValueOrDefault());}
查看>>
Bootstrap table分页问题汇总
查看>>
javascript进阶课程--第三章--匿名函数和闭包
查看>>