以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [20191208已修复]20191206的web数据源一个致命灾难性的bug!DataTable("xx").DataRows.Clear 居然等于 DataTable("xx").SQLDeleteFor(""),删表跑路了 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=143822) |
-- 作者:chen37280600 -- 发布时间:2019/12/5 11:07:00 -- [20191208已修复]20191206的web数据源一个致命灾难性的bug!DataTable("xx").DataRows.Clear 居然等于 DataTable("xx").SQLDeleteFor(""),删表跑路了 在web数据源下,DataTable("xx").DataRows.Clear 居然是清空数据库里该表的所有数据,而不是加载到本地的! 也就是 DataTable("xx").DataRows.Clear = DataTable("xx").SQLDeleteFor("") 实在是太可怕了!彻底清空数据,不可挽回的灾难。这个清空用户数据的bug,简直比内存泄露和报错退出还要严重! 此主题相关图片如下:1.png [此贴子已经被作者于2019/12/7 14:32:20编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/12/5 11:22:00 -- 一直都这样的好不!http://www.foxtable.com/webhelp/topics/0419.htm 例如: With DataTables("订单") Clear方法会直接从后台清除所有行,并即刻生效,且不能撤销,所以一定要慎重使用。 |
-- 作者:chen37280600 -- 发布时间:2019/12/5 11:24:00 -- 不是这样的,你看2个数据源的对比,完全一样的代码 DataRow都是存在本地内存里的行,没加载到本地的,就不在Clear范畴里 Clear只是等于 删除本地的行+保存功能,并不应该能删掉数据库里的数据 而且按照你的说法,就缺了一个 清空已经加载到本地的行的方法了 [此贴子已经被作者于2019/12/5 11:30:47编辑过]
|
-- 作者:chen37280600 -- 发布时间:2019/12/5 11:34:00 -- 在官方的一贯的思路了,对外部数据库进行直接操作的,一定会有特别的符号申明,例如SQLxxx,或者是FromSever =True DataTable都是指已经加载到本地内存的数据,Table是指要展示的部分或全部内存数据。 外部数据源→DataTable内存→Table显示器 3层数据结构很清晰,不应该存在有内存偷偷操作外部数据源的混淆理念
[此贴子已经被作者于2019/12/5 11:34:55编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/12/5 11:40:00 -- 我测试没有问题哦 清空已经加载到本地的行的方法就是:DataTable("xx").DeleteFor("") |
-- 作者:chen37280600 -- 发布时间:2019/12/5 11:45:00 -- 你删除前,本地有12行数据,你外部数据库自然也有12行数据。 你删除本地12行,保存后自动触发删除外部数据源12行,当然没问题 正确方法: 1保证使用web数据源 2确保外部数据源里有数据 3把本地DataTable的loadfilter="1=2",也就是清空加载,让本地DataTable一条数据都没有 4执行DataTable.Clear 5最后,你看下你的外部数据源里,是不是所有数据都没了 简单说:本地没有任何数据下,执行Clear,也会把外部数据源里的数据全部删掉
[此贴子已经被作者于2019/12/5 11:48:34编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/12/5 12:02:00 -- 测试还是没有问题,access和SqlServer的web数据源都测试过了 |
-- 作者:chen37280600 -- 发布时间:2019/12/5 12:18:00 -- 好。你就用这段代码,对直连的数据源试试,保证第三阶段最后结果不是0 在直连数据库下,clear不会清除外部数据源的!
[此贴子已经被作者于2019/12/5 12:19:15编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/12/5 13:37:00 -- 确实是这样,问题已反馈! |
-- 作者:chen37280600 -- 发布时间:2019/12/5 14:42:00 -- 1206还是有这个问题,就是Clear方法,官方是想要删除还是不删除外部数据源的东西? 估计现在没多少人在用web数据库,都是直连,过去的项目里,clear一贯思路都是不删外部数据源 突然把它修正为会清空外部数据源,很多人不知道的话,直接到生产环境,发现问题的时候,已经是数据全空,绝对是个会炸的事情
[此贴子已经被作者于2019/12/5 14:52:30编辑过]
|