问题标签 [datatable]

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 投票
3 回答
495 浏览

c# - C# - 修改数据表

我有一个从数据库连接填充的数据表。我想对数据表进行检查,例如用文本替换数字并添加我自己的数据,然后再将其绑定到数据网格以供查看。如何访问数据表中的一条数据?谢谢。

0 投票
6 回答
32247 浏览

.net - 将数据表转换为通用列表的最快方法

我有一个返回数据表的数据层选择方法。它是从一个业务层方法调用的,然后应该返回一个强类型的泛型列表。

我想做的与这个问题非常相似(但不一样):
How do you convert a DataTable into a generic list?

不同的是我希望列表包含强类型对象而不是数据行(另外,我这里还没有可用的 linq)。

我担心性能。业务层方法将依次从表示层调用,结果将被迭代以显示给用户。在业务层添加一个额外的迭代似乎非常浪费,只是为了演示而立即再做一次,所以我希望这尽可能快。

这是一个常见的任务,所以我真的在寻找一个可以一遍又一遍地重复的好模式。

0 投票
18 回答
45947 浏览

c# - DataTable internal index is corrupted

I am working with a .NET WinForms app in C#, running against the 3.5 .NET framework. In this app, I am setting the .Expression member of a DataColumn in a DataTable, like so:

The 2nd line, where I actually set Expression, will sometimes result in the following exception:

There is no perceptible rhyme or reason as to when the error will occur; in loading the same data set, it may work fine but then reloading it will fail, and vice versa. This leads me to think it is related to a race condition, where another write operation is occurring on the DataTable as I'm trying to modify one of its columns. However, the code relating to DataTables is not multi-threaded and runs only on the UI thread.

I have searched the web and Microsoft forums, and there is much discussion and confusion over this issue. Back when the issue was first reported in 2006, the thought was that it was an flaw in the .NET framework, and there were some supposed hotfixes released that were presumably rolled into later versions of the .NET framework. However, people have reported mixed results in applying those hotfixes, which are no longer applicable to the current framework.

Another prevailing theory is that there are operations on the DataTable which, though seemingly innocuous, are actually write operations. For example, creating a new DataView based on a DataTable is actually a write operation on the table itself, because it creates an internal index in the DataTable for later reference. These write operations are not thread-safe, so it sometimes happens that a race condition leads to an unthread-safe write coinciding with our access of the DataTable. This, in turn, causes the internal index of the DataTable to become corrupted, leading to the exception.

I have tried putting lock blocks around each DataView creation in the code, but, as I mentioned before, code utilizing the DataTable is not threaded, and the locks had no effect, in any case.

Has anyone seen this and successfully solved / worked around it?


No, unfortunately I can not. Loading the DataTable has already occurred by the time I get a hold of it to apply an Expression to one of its DataColumn's. I could remove the column and then re-add it using the code you suggested, but is there a particular reason why that would solve the internal index is corrupted problem?

0 投票
3 回答
31315 浏览

c# - 数据表转 JSON

我最近需要将数据表序列化为 JSON。我在哪里,我们仍然在 .Net 2.0 上,所以我不能在 .Net 3.5 中使用 JSON 序列化程序。我想这一定是以前做过的,所以我上网查了一下,发现许多不同 选择。其中一些依赖于一个额外的库,我很难在这里推进。其他人需要先转换为List<Dictionary<>>,这似乎有点尴尬和不必要。另一个将所有值视为字符串。出于某种原因,我无法真正落后于他们中的任何一个,所以我决定推出自己的,发布在下面。

正如您从阅读//TODO评论中看到的那样,它在一些地方是不完整的。这段代码已经在这里生产了,所以它在基本意义上是“工作”的。它不完整的地方是我们知道我们的生产数据当前不会命中它的地方(数据库中没有时间跨度或字节数组)。我在这里发布的原因是我觉得这可以更好一些,我希望帮助完成和改进这段代码。欢迎任何输入。

请注意,此功能内置于 .Net 3.5 及更高版本中,因此今天使用此代码的唯一原因是您仍受限于 .Net 2.0。即便如此,JSON.Net 已经成为这类事情的 goto 库。

更新:
这已经过时了,但我想指出一些关于这段代码如何处理日期的事情。我当时使用的格式是有道理的,因为网址中有确切的理由。但是,该理由包括以下内容:

老实说,JSON Schema 通过将字符串“子类型化”为日期文字成为可能,确实解决了这个问题,但这仍在进行中,要实现任何重大采用都需要时间。

嗯,时间已经过去了。今天,可以只使用ISO 8601日期格式。我不会费心更改代码,因为真的:这是古老的。只需使用 JSON.Net。

0 投票
2 回答
8258 浏览

c# - .NET 中的 DAL 和 BLL

Microsoft 为 ASP.NET (2.0) 应用程序提供了此DAL/BLL 设计建议。我知道一些替代方案,并且我已经在 SO 上阅读了相关问题。但是我想知道这个提议的解决方案现在是否值得实施,你知道有什么具体的缺点吗?

我想开发 DAL/BLL 组件供公司内部使用,从各种应用程序和脚本访问客户和员工数据等。然而,在我开始构建这些东西之前,我想确保这个解决方案是“好的”。例如,BLL传递数据表而不是封装任何东西,您没有包含逻辑的隔离业务对象。它基本上只是一个愚蠢的层,可以稍微简化 CRUD 操作并允许控件的数据绑定。

在该领域有经验的人可以指出这种方法的优缺点吗?

0 投票
2 回答
5067 浏览

jsf - 使用面在数据表上的多行数据记录

在 JSF 中是否可以让数据表显示如下记录?

谢谢

0 投票
2 回答
684 浏览

.net - 从 .NET Web 服务返回行

我正在使用 .NET Web 服务作为数据库的接口。从此 Web 服务返回行的最佳方法是什么?

我隐约记得 .NET 2.0 在返回 DataTable 对象方面存在问题。这些问题还存在吗?

更新: .NET 1.1 中 一些问题。另外,我相信在 2.0 中,DataTable 在客户端被反序列化为 DataSet 对象。我对么?

0 投票
3 回答
969 浏览

.net - 将数据表作为字段从 Oracle 传递到 .NET

在 .NET 数据表中,列是对象类型,它可以包含数据表作为列的有效类型。所以你可以创建一个相当复杂的结构:

在调用 Oracle 存储过程时,有没有办法返回这样的结构。我尝试使用内联视图,但它不允许我这样做。例子:

这不起作用,但有什么办法可以做我想做的事情吗?目前,我必须在一次调用数据库中取回公司列表,然后遍历所有记录并进行单独调用以获取每个订单列表。

[添加了有效答案 - 直到现在还没有真正回答问题的答案]

0 投票
1 回答
1196 浏览

.net - 将 ADO.NET 数据表添加到空白 MDB 文件

如何将我在代码中构建的多个数据表添加到我的应用程序附带的空白 MDB 文件中?

我发现通过 OledbConnection 对象连接到 MDB 文件很容易,但是我无法找到一种简单的方法来向其中添加我的表。它坐在那里,空旷而空旷,但接下来是什么?

我可以很容易地将我的表添加到数据集,但我仍然看不到将数据集映射到我打开的 MDB 文件的简单方法。

我错过了一个简单的解决方法吗?如果可能,我想避免使用ADOX 。我还看到将数据集写成 XML 非常容易,但我发现没有类似的功能可以写出 MDB 文件。

0 投票
4 回答
10583 浏览

.net - 如何将 DataTable 转换为 IDatareader?

我们都知道 DataReader 比 DataTables 更快,因为 DataReader 用于构建 DataTable。

因此,鉴于我已经有一个 DataTable....为什么要将其转换为 DataReader?

好吧,我正在创建一个名为 IDataProvider 的内部接口。此接口旨在在本地和作为 WebService 实现。该接口将有一个方法“Getdata”,它接受一些标准信息并返回一些数据。

由于 DataReader 是最快的数据检索机制,因此我希望将其用作“GetData”方法的结果类型。但是,我们也知道 DataReader 不可序列化,因此无法通过 Web 服务在 Web 上传输...

在网络的情况下,我会让本地代理类将数据请求为 DataTable,然后在本地将其转换为 DataReader。

通过这种方式,本地应用程序不需要知道(或关心)它是在本地还是远程访问数据。

但是,为了做到这一点,我需要知道...如何将 DataReader 包装在预先存在的 DataTable 周围?

更新:我的业务逻辑不会保留在 Web 服务中,因为使用 Web 服务的 DataProvider 可以切换为不使用的。因此,businessLogic 将保存在客户端应用程序中。

FWIW我正在使用.Net 3.5 SP1