同时执行插入和更新dataset时出现“违反并发性”,如何解决?

vortexroc 2011-04-16 06:06:13
如下代码:
For i As Integer = 1 To weaTypes.Length
For j As Integer = 1 To names.Length
For k As Integer = 1 To Tlevs.Length
'首先添加日期, 名称的空记录
TmpSql = "forecastdate=#" + nowDate.ToShortDateString + "# and " + "weatherType='" + weaTypes(i - 1) + "' and AreaName='" + names(j - 1) + "'"
fcDR = basinDS.Tables("yb").NewRow
If basinDS.Tables("yb").Select(TmpSql).Count = 0 Then

fcDR(1) = nowDate.ToShortDateString : fcDR(2) = names(j - 1) : fcDR(3) = weaTypes(i - 1)
basinDS.Tables("yb").Rows.Add(fcDR)
acsDA.Update(basinDS.Tables("yb"))
End If
basinDS.Tables("yb").Select(TmpSql)(0)(k + 3) = "F0"
acsDA.Update(basinDS.Tables("yb"))
Next
Next
Next
目的是首先检索数据库记录的记录标识(日期,类型,名字),如果没有符合的记录则添加一个记录标识,然后更新剩余的列值;如果有符合的记录则直接更新剩余的列值,但是在添加了第一个记录的标识后马上更新剩余列值时就提示:“违反并发性”,请问如何解决?
...全文
210 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeffyuki 2011-04-28
  • 打赏
  • 举报
回复
改写dataset里面每一个datatable的update语句,把where后面的条件大多数去掉,只保留主键=@主键.这样就不会涉及到全表更新了。
colorall 2011-04-18
  • 打赏
  • 举报
回复

For i As Integer = 1 To weaTypes.Length
For j As Integer = 1 To names.Length
For k As Integer = 1 To Tlevs.Length
'首先添加日期, 名称的空记录
TmpSql = "forecastdate=#" + nowDate.ToShortDateString + "# and " + "weatherType='" + weaTypes(i - 1) + "' and AreaName='" + names(j - 1) + "'"

If basinDS.Tables("yb").Select(TmpSql).Count = 0 Then
fcDR = basinDS.Tables("yb").NewRow
fcDR(1) = nowDate.ToShortDateString : fcDR(2) = names(j - 1) : fcDR(3) = weaTypes(i - 1)
basinDS.Tables("yb").Rows.Add(fcDR)
End If
basinDS.Tables("yb").Select(TmpSql)(0)(k + 3) = "F0"
acsDA.Update(basinDS.Tables("yb"))
Next
Next
Next
1. 测试环境的搭建(DBunit+HSQLDB) 1 1.1. DBunit的简介 1 1.1.1. DBunit简单介绍和原理 1 1.1.2. DBunit的三大核心组件 1 1.1.3. DBunit的安装使用 2 1.2. HSQLDB简介 3 1.2.2. 什么是HSQLDB 3 1.2.3. HSQLDB安装和使用 5 1.2.4. HSQLDB使用 7 1.2.5. HSLDB的使用注意事项 8 2. 数据库单元测试测试流程介绍 1 2.1. 数据库单元测试的原因 1 2.2. 测试关注点 1 2.3. 测试流程 1 3. 数据库单元测试最佳实践 2 3.1. 数据库单元测试最佳实践 2 3.1.1. 从“易测试的”应用程序体系结构开始。 2 3.1.2. 使用精确的断言。 2 3.1.3. 外化断言数据。 3 3.1.4. 编写全面的测试。 4 3.1.5. 创建稳定、有意义的测试数据集。 5 3.1.6. 创建专用的测试库。 6 3.1.7. 有效地隔离测试。 7 3.1.8. 分割测试套件。 8 3.1.9. 使用适当的框架(如 DbUnit)简化过程。 9 3.2. DBunit使用最佳实践 9 3.2.1. 每一个开发人员需要搞一个数据库实例。 9 3.2.2. 使用XML文件作为DataSet 9 3.2.3. DBUnit的最佳实践是尽可能使用最小的数据集。 10 3.2.4. DatabaseOperation.CLEAN_INSERT 策略 10 3.2.5. 为相互关联的测试场景创建多个种子文件是一个很有效的策略. 10 3.3. 自我总结 10 3.3.1. 对各种类型的方法的测试策略: 10 3.3.2. 写一个基TestCase。 10 3.3.3. 测试数据库的有效方法。 10 3.3.4. seed文件的设置 10 3.3.5. 一般的测试的步骤 11 4. 常见问题 1 4.1. DBUnit使用问题 1 4.1.1. 在运行测试用例的候,出现org.dbunit.dataset.DataSetException: java.net.MalformedURLException at……………类似的异常? 1 4.1.2. 在运行测试用例的候,出现SQLException,并且对应的sqlstate:23504,这是为什么? 1 4.2. HSQLDB相关的问题 1 4.2.1. 抛出:java.sql.SQLException: socket creation error 1 4.3. 其他问题 1

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧