有什么办法可以在我拉下一张桌子之后将新记录推送到SqlDataReader吗?我有这个垃圾代码,我需要修改,这似乎是最简单的方法来做我需要的。我明白不应该这样做,如果你必须这样做,你的逻辑就会出现严重的问题,但是有办法吗?
答案 0 :(得分:1)
SqlDataReaders是正向读取的,所以我怀疑你可以添加一条记录(无论你是否已将整个表拉下来)。事实上,任何继承DbDataReader的东西都是前向只读。
我猜你需要对记录做一些操作。也许您可以做的是使用SqlDataReader来填充DataTable并将新记录放入DataTable中。但是,您需要更改代码以处理DataTable。
答案 1 :(得分:1)
从这一点开始,最简单的方法就是手动创建一个带有插入命令字符串的命令(如果没有消毒/清理数据则参数化,最好还是这样做,但可能会使代码变得更加笨重)。考虑到你已经安装了其他所有内容,代码应该非常小。
答案 2 :(得分:1)
当您说“推送新记录”时......您是否想要在结果中添加记录?或者你的意思是你想要INSERT吗?
INSERT无法通过阅读器完成;但是,你可以和读者一起做。当然,更新原始查询以便联合数据会更简单。
特别是:您无法创建自己的SqlDataReader,但您可以创建自己的定制IDataReader实现;这可以包装SqlDataReader,只是从内部SqlDataReader代理数据,直到SqlDataReader.Read()方法返回false - 然后你可以交换返回自己的数据,返回true直到你的数据用完为止。实现起来并不简单(主要是因为你需要实现很多方法来编写自己的IDataReader),但肯定不是不可能的。
答案 3 :(得分:0)
你需要稍微扩展一下你的问题,
例如,如果您需要遍历一百万条记录并在浏览数据时更新同一个表中的字段。
您可以为数据库创建第二个SqlConnection并在表上执行update语句(容易出现锁定问题),或者更好地将所有更改插入到临时表中,并在完成后将更改合并回原始表中与读者。
我很想问这个问题,这个逻辑是否可以用一个SQL UPDATE语句替换?