问题标签 [dataadapter]

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 回答
4770 浏览

c# - 为单个查询中的多个 SQL 选择的结果定义表名

例如,如果我运行以下查询:

并使用数据库适配器(C#)运行它,我得到一个包含两个表的数据集。如何在 SQL 中定义结果表的名称?

我只能在 SQL 中执行此操作。我无权访问 c# 代码。

0 投票
2 回答
5741 浏览

c# - Using DataAdapter .Update to insert/upd rows in dataset (not based on DBs PK) problem

I have a batch process that reads data from multiple tables into a dataset based on a common key. I then build a second dataset of the destination data querying on the same key.

At this point I have two Datasets that are structurally identical (from a table/column layout perspective). I then have a process that adds any row that exists in source to the destination dataset. In addition, the process will attempt to update certain columns based on the common key as well.

The problem seems to come in when the DataAdapter.UPDATE command is called with existing rows that it needs to update. Error: System.InvalidOperationException was unhandled Message="The table specified in the SELECT statement does not contain a unique key or identifier column, or the SELECT statement does not include all of the key columns."

Since I have no way of controlling what the PK is on the destination DB, is there a way to tell the Adapter what the key is for this particular update? I have "custom" set the primary keys for each DataTable in the Dataset.

This is a non user interfacing batch process and its perf requirements are quite low. (to explain the use of datasets, etc)

Any Thoughts?

0 投票
2 回答
2467 浏览

c# - 使用 DataAdapter 批量更新

我有一种情况,我有一堆都需要执行的 SQL 更新命令。我知道 DataSets 可以进行批量更新,但我能够完成它的唯一方法是首先将整个表加载到数据集中。如果我只想更新表中记录的子集怎么办?

0 投票
9 回答
16987 浏览

.net - 填充数据表时,datareader 比 dataset 快吗?

哪个会更快。

1)循环数据读取器并创建基于自定义行和列的填充数据表

2)或创建一个dataAdapter对象并只是(.Fill)一个数据表。

在动态创建数据表时,数据读取器的性能是否仍然适用?

0 投票
2 回答
1351 浏览

design-patterns - DataAdapter 使用外观模式还是适配器模式。

当我看到对象Update()Fill()方法时DataAdapter,我总是想是否DataAdapter使用Facade Pattern?

看起来它会在幕后为我们创建Command对象、Connection对象并执行它。

或者DataAdapter使用适配器模式,因为它是DatasetCommand对象之间的适配器,连接对象?

0 投票
4 回答
9332 浏览

c# - C# 问题:我加载 .MDB 文件、对其进行更改并将更改保存回原始文件的最简单方法是什么?

我正在进行的项目即将完成。我正在加载一个 .MDB 文件,在 DataGrid 上显示内容并尝试在 DataGrid 上获取这些更改并将它们保存回 .MDB 文件。我还将创建一个函数,允许我从一个 .MDB 文件中获取表并将其保存到另一个 .MDB 文件中。当然,如果我不知道如何将更改保存回 .MDB 文件,我将无法执行任何操作。

我对谷歌进行了广泛的研究,但我的问题没有答案。我认为自己是这个特定主题的初学者,所以请不要让答案太复杂——我需要最简单的方法来编辑 .MDB 文件!请提供编程示例。

  1. 假设我已经与 DataGrid 建立了连接。如何获取 Datagrid 所做的更改?我敢肯定这个回答很简单。
  2. 然后我需要知道如何获取这个 Datatable,将它插入到它来自的 Dataset 中,然后获取该 Dataset 并重写 .MDB 文件。(如果有办法只插入已更改的表,我会更喜欢。)

提前谢谢您,如果您需要更多信息,请告诉我。这是我可能要问的关于这个话题的最后一件事……谢天谢地。

编辑:

我正在使用的 .mdb 是Microsoft Access 数据库。(我什至不知道有多个 .mdb 文件)

我知道我不能通过流写入器或任何东西直接写入 .MDB 文件,但有没有办法可以生成一个已经包含 DataSet 信息的 .MDB 文件?或者是否有一种方法可以将表添加到已加载到 DataGrid 中的 .MDB 文件中。必须有办法!

同样,我需要一种在 C# 中以编程方式执行此操作的方法。

编辑:

好的,我的项目相当大,但我使用单独的类文件来处理所有数据库连接。我知道我的设计和来源真的很草率,但它完成了工作。我只和我在互联网上找到的例子一样好。

请记住,我只是以另一种形式连接到 DataGrid。让我知道您是否需要 Datagrid 表单中的代码(不过我不知道您为什么需要它)。DatabaseHandling.cs 处理 2 个 .MDB 文件。所以你会在那里看到两个数据集。我最终将使用它从一个数据集中获取表格并将它们放入另一个数据集中。我只需要弄清楚如何将这些值保存到 .MDB 文件中。

有没有办法做到这一点?一定有办法...

编辑:

根据我的研究和阅读......我认为答案就在我的眼皮底下。使用“更新()”命令。现在,虽然这再次确保实际上有一种简单的方法可以做到这一点,但我仍然面临一个问题,即我不知道如何使用这个更新命令。

也许我可以这样设置:

我认为可能会这样做,但我不想手动插入任何东西。我想同时做这两个:

  • 获取在 Datagrid 上更改的信息并更新我从中获取的 Access 数据库文件 (.mdb)
  • 创建一个函数,允许我从另一个 Access 数据库文件 (.mdb) 中获取表,并将它们替换为辅助 Access 数据库文件 (.mdb)。这两个文件将使用完全相同的结构,但其中包含不同的信息。

我希望有人对此提出答案……我的项目已经完成,等待的只是一个简单的答案。

再次提前感谢您。

编辑:

好吧……好消息。我已经想出了如何查询 .mdb 文件本身(我认为)。这是代码,它不起作用,因为由于我尝试使用的 sql 命令而出现运行时错误。这将把我带到我的下一个问题。

DatabaseHandling.cs 新增功能代码:

如您所见,我实际上已经设法对连接本身执行查询,我相信它是实际的 Access .MDB 文件。正如我所说,我对文件执行的 SQL 查询不起作用,并且在使用时会产生运行时错误。

我试图执行的命令应该从 .MDB 文件中获取一个表并覆盖不同 .MDB 文件的相同类型的表。我在上面尝试的 SQL 命令试图直接从 .mdb 文件中获取一个表,然后直接将其放入另一个表中——这不是我想要做的。我想从 .MDB 文件中获取所有信息——将表放入数据表中,然后将所有数据表添加到数据集(我已经完成)。我想为两个 .MDB 文件执行此操作。一旦我有两个数据集,我想从每个数据集中取出特定的表并将它们添加到每个文件中,如下所示:

  • DataSetA >>>>----- [添加表(覆盖它们)] ----->>>> DataSetB
  • DataSetB >>>>----- [添加表(覆盖它们)] ----->>>> DataSetA

我想把那些数据集拿走,然后把它们放回它们来自的每个 Access .MDB 文件中。基本上保持两个数据库同步。

所以我的问题,修改后,是:

  1. 如何创建一个 SQL 查询,通过覆盖现有的同名表将表添加到 .MDB 文件。查询应该能够在运行时动态创建,该数组用我要添加的表名替换变量。
  2. 如何获取 Datagrid 对 DataTable 所做的更改并将它们放回 DataTable(或 DataSet),以便我可以将它们发送到 .MDB 文件?

我试图尽可能详细地说明......因为我相信我没有很好地解释我的问题。现在这个问题已经变得太长了。我只是希望我能更好地解释这一点。:[

编辑:

感谢下面的用户,我想我几乎找到了解决方法——关键字about。下面是我更新的 DatabaseHandling.cs 代码。我收到运行时错误“数据类型不匹配”。考虑到我正在尝试将这些表复制到另一个具有完全相同设置的数据库中,我不知道这怎么可能。

为什么我会收到此错误?两张表完全相同。我究竟做错了什么?最坏的情况,在插入具有不同值的完全相同的结构表之前,如何删除其他 Access .MDB 文件中的表?

伙计,我希望我能弄清楚这一点......

编辑:

好吧,我已经走了一段距离。我的问题已经演变成一个新问题,因此值得单独提问。我已经回答了我的问题,因为现在我知道如何直接对我打开的连接执行查询。谢谢你们!

0 投票
2 回答
1611 浏览

strongly-typed-dataset - 针对类型化数据集的数据适配器 = SQL 架构噩梦

我看到很多参考资料说 TableAdapter 很弱而且很愚蠢,并且任何真正的开发人员都会使用 DataAdapter。我不知道这是否属实,但我正在探索这个问题,并强调整个“DataAdapter/TableAdapter 针对 Typed DataSets”的气味有多糟糕。

让我试着解释一下……

假设我在 xsd 文件中有我的 Typed DataSet 定义,现在我准备在代码中创建一个 DataAdapter,针对该模式......(顺便说一下,我正在使用 OleDb 访问独立的 .dbf 文件文件夹...这里没有要调用的 SQL Server 存储过程,只是普通的旧原始表,准备好执行操作。)

从我目前的研究来看,这是我如何看待 DataAdapter 与 Typed DataSet 一起使用的。告诉我我是否错了。(最后我有我的大抱怨/问题。)

事情是这样的吗?它确实有效,所以这很好。确实,强类型行为很棒。

现在,我的抱怨......你的意思是告诉我,我已经在我的 DAL 方法 (GetJobsByCustomer) 中维护了相同的 exaxt SQL 语法,以匹配 xsd 中表的架构?在我的手工编码的 SQL 和 xsd 模式之间进行如此多的维护和分离真是太疯狂了。根本没有错误,因为您正在编写文本字符串!您可以在运行时确定它是否有效。

当您在代码中键入所有 SQL 时,必须来回查看以使您的编码 SQL 与 xsd 表模式保持同步,这很糟糕。

当然,我错过了一些东西。

真是一场闹剧。类型化的数据集可以与漂亮的智能感知一起使用,因为它是从模式生成的,但是归根结底,编写与类型化模式匹配的 SQL 只是一件痛苦的事。他们所做的只是将头痛转移到一个新的领域。

请告诉我,我在这里遗漏了一些可以使情况变得更好的东西。

0 投票
1 回答
1256 浏览

c# - DataAdapter 从基表模式中选择字符串?

当我构建我的 .xsd 时,我必须为每个表选择列,它为表创建了一个模式,对吗?那么,如何让 Select 字符串用作数据适配器新实例的基本 Select 命令,然后根据需要向其附加 Where 和 OrderBy 子句?

这将使我不必使每个 DataAdapter 的字段列表(对于同一个表)与 .xsd 文件中该表的架构保持同步。

有几个 DataAdapter 在某个表模式上工作但在 Where 和 OrderBy 子句中使用不同的参数不是很常见吗?当然,不必为六个 DataAdapter 维护(甚至冗余构建)Select 字符串的字段列表部分,这些 DataAdapter 都在同一个表模式下工作。

我正在设想这样的伪代码:

0 投票
2 回答
105 浏览

asp.net - 我的 GridView 代码有问题

这段代码永远不会填满网格视图我知道这里的代码有问题

我已经使用名为 ZidduDataSet.xsd 的向导创建了数据集,适配器名称为 FilesTableAdapter

有人可以帮忙吗?

0 投票
1 回答
409 浏览

vb.net - 适配器更新

我使adapter.insert和adapter.delete都可以正常工作,但不能与adapter.delete一起使用,即使我只在这里输入参数代码

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) 处理 Button2.Click usersAdp.Fill(userstable) usersAdp.Update(txtid.Text, Me.txtname.Text, Me.txtemail.Text, Me.txtpassword。 Text, Me.txtconfirm.Text, Me.txtcode.Text, Me.CheckBox1.Checked = True) Me.GridView1.DataSource = userstable Me.GridView1.DataBind() End Sub