VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 787|回复: 7

求一算法:快速更改数据表中某行的值。

[复制链接]

1

主题

16

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-21 06:40:01 | 显示全部楼层 |阅读模式
已知一行,关键字为DDNO,SEHAO,CHICUN需要去判断在某内存表中是否存在该行原始记录,如果有则更改,没有则添加。直接用循环太慢,请高人赐教优良算法!
回复

使用道具 举报

0

主题

52

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-1-30 14:54:02 | 显示全部楼层
内存表?

如果是数据库中得来的可以直接用select count(*)from XXX where …………
然后看行数是否为0

如果数据是程序运行中生成的 可以考虑用hashtable存放 然后直接用key值匹配
回复

使用道具 举报

0

主题

23

帖子

20.00

积分

新手上路

Rank: 1

积分
20.00
发表于 2020-1-31 13:09:01 | 显示全部楼层
存储过程
回复

使用道具 举报

1

主题

16

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-1-31 15:45:02 | 显示全部楼层
意思可能没说清楚,现在用的DATASET来操作的。假设有数据集ds,ds中有一表A,有一条行记录dr,主键列为“DDNO,SEHAO,CHICUN”3列的组合,现在我要根据主键来判断dr是否存在于A表,有则更新起值,没有则添加新行到A表
回复

使用道具 举报

1

主题

16

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-1-31 17:18:01 | 显示全部楼层
因为A表记录太多,感觉用select方法和视图过滤,或者是循环都挺慢。
回复

使用道具 举报

0

主题

52

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-1-31 22:36:01 | 显示全部楼层
建立DataView 通过RowFilter筛选数据
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-3 17:15:01 | 显示全部楼层
DataRows[] rows = ds.table[0].select("DDNO='A' and SEHAO='B' and CHICUN='C'");
if(rows.length = 1)
{
    这里面就写你的逻辑了
}
回复

使用道具 举报

1

主题

16

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-2-17 20:00:02 | 显示全部楼层
楼上的两位,你们说的办法我当然试过了,速度还是不理想,如果要是只需要根据某种条件快速取到某行某指定列的值的算法应该简单些吧。那这样的算法该怎样写呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表