问题标签 [sqlcommandbuilder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5672 浏览

c# - DataTable.Update 失败并引发 DBConcurrencyException

我正在尝试利用 DataTable.Update 方法来更新 SQL 数据源。下面是执行更新的方法的代码。

当用户单击“更新表”按钮时,将调用上述方法。
发生的事情是在我包含之前da.ContinueUpdateOnError = truetry catch抛出DBConcurrencyException给予Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.并且不会在表中更新/插入任何记录。
在我添加之后da.ContinueUpdateOnError = trueda.Update()继续没有错误但是,第一行DataTable dt仍然不会被更新,但是,第二行dt会被插入。

更奇怪的是,当我通过约 20 行的表调用更新时,更新完美执行,更新 2 或 3 行并插入 2 或 3 行。如果我通过一个包含 2 行的表调用更新,则会引发异常。两个不同的表具有相同的结构。

0 投票
0 回答
110 浏览

.net - SqlDataAdapter RowUpdating 事件似乎改变了更新命令

我按照教程使用 .Net SqlDataAdapater.Update 方法生成表更新脚本。但是,似乎 SqlCommands 在某处发生突变,以至于语法上不正确。对我来说更奇怪的是,这个问题似乎是突然冒出来的。

输出:

所以你可以看到问题是生成了一个不正确的脚本:

输出看起来像是在第一行更新完成执行之后命令在某处发生了变异,但是第二行更新之前,我不知道是什么导致这种情况发生。谁能提供任何线索或发现我做错了什么?正如我上面指出的,这工作正常,然后似乎没有理由就坏了。

更新

我完全删除了 StringBuilder 操作(RowUpdating 事件包含打印出更新命令),但我仍然看到了奇怪的行为。

但是,我相信我能够通过在我的代码中移动一些东西来缓解这个问题。除此之外,我在适配器上设置了各种命令后设置了 RowUpdating 事件。我想我不确定为什么这会影响问题(因此,我没有将其列为答案),但至少现在它似乎正在解决问题。

0 投票
2 回答
1854 浏览

sql - 如何使用 SQL 任务更新表

我有这个 SQL 来更新我表中的修改记录。它在 SSMS 中运行,但我如何在 SSIS 包中实现它?我尝试使用 SQL 任务,但它无法识别列。

我可以在数据流 ole db 源(sql 命令具有 select 语句)中放置一个选择,为我的导入日期派生列,然后 ole db 目标来更新记录 - 但是要更新的 sql 命令的语法是什么?

0 投票
1 回答
162 浏览

sql - 带有 Convert 语句的 SqlCommandBuilder

我有一个用 .NET 语言构建的应用程序。

在这个应用程序中,我们主要读/写数据库(SQL Server 2005)。有时(对于单个输入)我只使用 SQL 查询,例如:

如果我想更新我的数据库中的一堆记录,我使用这个SqlCommandBuilder类,如下例所示:

这些效果很好。但是现在,由于某种原因,我需要插入/更新日期时间并CONVERT在其上使用该功能。

单个 SQL 查询效果很好:

这没有问题,但是我不知道如何使用我的SqlCommandBuilder脚本来实现相同的目标。我可以将所有内容更改为单个查询,但这需要一周时间。

我已经尝试了以下方法,但没有成功:

0 投票
1 回答
1783 浏览

sql-server - SQLCommandBuilder - 仅从 DataTable 更新“追加”数据库表

我正在尝试SQLCommandBuilder使用以下测试代码使用数据表行来更新数据库表行。一张带有主键列的表和一张数据表以保持简单。

使用以下代码,该dbo.Dogs2表“附加”了数据表行 - 因此将行数加倍,而不仅仅是更新更改的行

如果我在table.AcceptChanges()之前添加代码Dim builder As New SqlCommandBuilder(adapter),则数据库表dbo.Dogs2保持不变。

如果我在table.AcceptChanges()之前添加代码adapter.Update(table),则数据库表dbo.Dogs2保持不变。

0 投票
1 回答
172 浏览

sql - 使用带有 SqlCommandBuilder 的 TableAdapter 和导出到 DataTable 的工作表来更新 SQL 数据库表

我正在将电子表格工作表范围中的数据导出到数据表 (dtpHExportDataTable) 中。当我调用 ShowResult(dtpHExportDataTable) 时,网格表单会显示正确的数据表信息(标题和数据行)。同样,当我调用 ShowResult(resultsDataTable) 时,网格表单会显示正确的数据表信息(数据库表行包括更新的行)

我的 tableadapter 查询生成器,更新命令文本是“UPDATE Analytical_Sample_Log_ResultsInfo SET SampleNo = @SampleNo, Results = @Results, Complete_Date = @Complete_Date WHERE (Dex_Row_Id = @Original_Dex_Row_Id)

本质上,数据表正确填充;但是,即使没有抛出异常,tableadapter 也不会更新 sql 数据库表。

0 投票
0 回答
194 浏览

vb.net - 如何在 VB.Net 中编写手动 SQL 命令以在不使用 CommandBuilder 的情况下从 DataGridView 进行更新

我正在使用 VB.Net 和 SQLite 数据库创建一个 Windows 应用程序。在我的一个获胜表单中,我曾经在单个事件下通过单独的 SQL 命令从两个表( ImpShpHeader, )中检索数据。在文本框中检索数据,同时使用两个单独的 SQL 命令通过按钮单击事件检索和更新两个表的数据,一个命令是从文本框更新到我正在使用的但从更新到我正在使用的。从文本框更新为成功,但更新方式出现以下错误:多个基表不支持动态 SQL 生成。所以在这里我需要手动 SQL 命令来更新 DataGridView 中的任何更改。这是我的代码:ImpShpDetailImpShpHeaderImpShpDetailDataGridViewImpShpHeaderDataGridViewImpshpDetailCommandBuilderImpShpHeaderCommandBuilder

0 投票
0 回答
137 浏览

c# - DataAdapter .Update 不更新回表

我的问题很常见,但我没有找到任何解决方案。这是我的代码:

我需要加载 DataTable(从任何地方)并将数据替换到数据库。这是我的回滚功能。这个函数使用一个“CommandStructure”,我已经封装了所有的 SqlClient 对象。PrepareStructure 初始化所有对象

因此,我的函数使用 SqlCommandBuilder 和 DataAdapter 对数据库进行操作。PreSelectCommand 类似于“Select * from Purchase where CustomerId = @id”表 Purchase 在 ID 字段上有一个 primaryKey

我执行代码,我没有任何错误,但数据没有更新。变量“记录”包含正确数量的修改(??)记录,但......在桌子上什么都没有

有人能帮我吗?

编辑 1: 使用 SQL Profiler,我看到在 DB 上没有执行任何查询。仅在 .Fill(tbl) 命令上选择查询。

编辑2: 现在我做了一个改变:

所以我看到执行了预期的查询,但是使用了相反的参数。

代替

0 投票
2 回答
170 浏览

c# - 无法使用 SQL 和 CommandBuilder C# 添加行

我正在这样做(请参阅Using SqlDataAdapter to insert a row),但它没有给我 .ADD 方法

这是我的代码:

我收到错误数据表不包含 ADD 的引用。我很乐意以另一种方式做到这一点,但我不能使用 table.Adapter.Insert 因为我需要我的数据进入特定的字段。


所以我改变了 dataSet.Tables["CT_DETIMP"].Add(impRow); 到 dataSet.Tables["CT_DETIMP"].Rows.Add(impRow); 现在我在这一行得到一个空错误: var impRow = dataSet.Tables["CT_DETIMP"].NewRow();


此代码有效:

' SqlConnection myConnection = new SqlConnection(connectionString); 我的连接。打开();

0 投票
0 回答
351 浏览

c# - 我可以将存储过程与命令生成器和 datagridview 一起使用吗?

我想知道我是否可以插入/删除/更新DataGridView然后使用存储过程对数据库发生同样的情况? 在此处输入图像描述