问题标签 [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 回答
1368 浏览

ado.net - SqlCommand (CommandType Text) 检索参数集合

有没有办法从 CommandType = Text 获取SqlCommand参数集合

例如:

我想要一种使用 [@Param1,@Param2] 获取参数集合的方法...我不知道 sql 查询(它们是动态的),我想获取我的应用程序的参数以将它们创建为输入控件。

我不能这样做SqlCommandBuilder.DeriveParameters(command),因为它只适用于存储过程。

谢谢!

0 投票
3 回答
2420 浏览

c# - SqlCommandBuilder 如何完成它的工作,我如何阻止 ReSharper 删除它的建议?

我不明白它是怎么SqlCommandBuilder做的。我有以下代码:

该变量builder不在任何地方使用,我也不像在MSDNGetUpdateCommand()上那样调用该方法。我只创建,将其传递给. 但代码工作正常。SqlCommandBuilderSqlDataAdapter

如果你看一下代码,它似乎是一行

可以安全删除。事实上,ReSharper 建议删除它。但如果我这样做了,代码将不再运行,因为SqlDataAdapter它不知道如何执行更新。

在调试模式下,我注意到在执行该行之后,SqlDataAdapter'UpdateCommand属性仍然是null. 从MSDN文档中,我了解到将SqlCommandBuilder自身注册RowUpdatedSqlDataAdapter.

但是当那个事件被触发时它会做什么呢?实际上是在SqlDataBuilder执行更新本身吗?

我注意到的其他事情,如果我删除SqlCommandBuilder,我的DaRowUpdated方法被触发一次,就在da.Update语句上发生 InvalidOperationException 之前。我没想到的是。我认为该RowUpdated事件仅在实际更新行时发生。

所以......三个具体问题:

  1. 如何防止 ReSharper 建议删除此行?
  2. 编写一个像这样的类是不好的做法SqlCommandBuilder,其中代码没有以任何方式表明创建一个实例正在对SqlDataAdapter传入的东西做某事?
  3. 这是一种设计模式吗?
0 投票
1 回答
702 浏览

sql - 在 ADO.NET 中使用或避免使用 CommandBuilder

建议使用 CommandBuilder 还是应该为 SqlDataAdapter 手动创建 InsertCommand、DeleteCommand 和 UpdateCommand?

使用 CommandBuilder 的明显优势是更少的开发时间,缺点是更多的运行时间。除了这些因素之外,在使用/避免使用 CommandBuilder 时,还有什么需要注意的吗?

0 投票
1 回答
16071 浏览

ado.net - 如何在 SSIS 表达式生成器中使用日期时间值来制定 SQL 命令?

我正在尝试使用 Ado.Net Sql 命令从带有日期过滤器的表中选择数据。

Date_Inserted和都是@[User::LastInsertedDate]类型DateTime。当我尝试在表达式生成器中评估表达式时,出现以下错误;

表达式可能包含无效标记、不完整标记或无效元素,它可能不是格式正确的,或者可能缺少必需元素的一部分,例如括号。

0 投票
2 回答
13553 浏览

c# - 如何使用 SQL Command Builder 和 SQL Data Apdater

我从http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder.aspx阅读了 SQL 命令生成器类 ,我发现我可以使用 select 和 update 命令显示对数据集/数据库进行的更新.

如果我使用单个数据集,SQL 命令生成器的概念很清楚,但如果我想使用两个不同的数据集怎么办?

场景:我正在将数据库中的值读入一个数据集 ds1;这是分配给 sql 适配器和 sql 命令生成器。现在,我只从 ds1 中读取选定的值并将其存储到第二个数据集 ds2 中;未分配给 sql 数据适配器和 sql 命令生成器。

如果我要更新 ds2 上的任何数据,我担心它是否会更新数据库。另外,我应该如何使用 SQL 命令生成器和 SQL 适配器来做到这一点。

//主数据集

主数据集填充表单加载事件。用户将输入他选择的项目编号,该项目将从主 ds 搜索并保存/显示到 2nd ds(2nd ds 目前未与任何适配器或命令生成器连接)。例如;第二个 ds 有 3 个项目。

现在说用户更新第二个 ds 上的任何信息,它应该自动更新数据库并显示在网格上。

//第二次ds2更新代码

}

根据您的建议,如果我在上面的代码中添加/声明适配器/生成器,它不起作用。我收到表映射错误。

0 投票
1 回答
898 浏览

c# - SQL 命令生成器查询值

我有一个 SQLDataAdapter,在我的查询中我获取两个字段,ID(PK),名称。

我向我的数据适配器注册了一个 sql 命令生成器,因此我不必编写查询来更新数据库中的表。

当我调用该da.update()方法时,sql 会抛出无法将 null 插入 DimensionID 的错误,由于此错误,我必须在我的数据集中也选择此字段,然后我在网格中使用适当的值填充此字段。然后da.update()工作。

现在的问题是我不希望这个字段出现在我的网格中,当我将其可见属性设置为 false 时,命令生成器会在查询中省略此列。为了解决这个问题,我必须将列宽设置为 0,但我的网格中仍然有一条细线。

有没有更好的方法来处理这种情况?除了我手动编写查询。

下面是填充网格的代码;

这是更新按钮背后的代码:

0 投票
1 回答
1587 浏览

c# - SqlCommandBuilder 内连接更新

我有 SQL 表作为课程和课程。课程表具有主键 LessonID,Classes 表具有主键 ClassID。ClassID 列也是 Lessons 表中的外键。我使用查询将带有 SqlDataAdapter 的数据导入 C# 中的 DataSet:

我通过 windows 窗体添加 ddata 和编辑 DataSet。但是是时候更新了。我不知道如何使用 SqlDataAdapter 更新 DataSet,因为 SqlCommandBuilder 不支持“内连接”功能。有任何想法吗?

0 投票
0 回答
2914 浏览

vb.net - 从 DataGridView 填充 SQL 数据库表

我再次向你寻求帮助。尝试将在 DataGridView 中输入的数据保存回 SQL 表时,我有点卡住了。

我已经关注了一些帖子,但只是无法弄清楚

我在表单上全局声明以下变量

我在表单加载时调用它

当用户在数据网格视图上留下一行应该保存回 sql 表时,我调用它

加载表单后,数据网格视图会填充正确的列,所以我认为第一部分没问题。保存数据时出现问题。当我第一次运行它时,没有错误消息。当我尝试第二行时,出现以下错误:

当传递带有新行的 DataRow 集合时,更新需要有效的 InsertCommand。

据我所知,之所以会产生问题,是因为数据适配器上没有设置更新命令。

0 投票
1 回答
134 浏览

c# - 如果我将列值“更改”为已经存在的值,会调用 UPDATE 吗?

我试图弄清楚是否需要额外的逻辑来避免对我的 SQL 数据库的无用调用,或者是否SqlDataAdapter.Update()会做正确的事情。如果我有这个代码:

仍然会为该行.Update()调用 SQL UPDATE,还是不会,因为该行的值没有真正改变?

0 投票
2 回答
7076 浏览

datagridview - 使用 SQL Server 存储过程插入更新删除 Datagridview?

我是 vb.net 的新手。请多多包涵。我想学习如何在Datagridview. 到目前为止,我了解到最好的方法是将 ? 绑定DatagridViewDataTable? 要求是使用存储过程。我不允许直接访问数据库表。

我的公共变量:

我的以下代码来自加载:

我的按钮保存代码:

问题:我不知道如何使SqlCommandBuilderto 工作。有没有办法让我覆盖SqlCommandBuilder并使用我现有的插入、更新、删除存储过程?

我想我找到了一个解决方案:(但我真的不明白数据库方面的副作用。)由于 SQLCommandBuilder 为我制作了插入、更新、删除命令,这是否意味着我不再需要我现有的插入、更新、删除存储过程?我工作的公司不允许直接访问表。

在我更新的代码下方:

cmdSaveDetails_点击代码:

我试图通过使用存储过程创建我自己的插入、更新、删除命令来复制 SQLCOMMANDBUILDER。我在 buttonSave_Click 上遇到此错误:sqladapter.Update(dtable) 错误:“并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条”

在我更新的代码下方:

全局变量:

表单加载代码:

LoadDisbursementDetails 子代码:

myownSqlCommandBuilder 子代码:

按钮保存代码:

请帮忙。我被困住了。谢谢。