问题标签 [system.data]

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 投票
0 回答
690 浏览

c# - 如何在不导致所有行使用默认值的情况下处理单行上的 DataColumn 表达式异常?

我正在尝试使用 DataTable 使用 DataColumns 上的 Expression 属性对数据行执行计算。微软

我发现如果将表达式应用于行时出现异常,将使用默认值。这正是我想要的有问题的行。问题是每个后续行都将使用默认值而不是评估表达式。

在此示例中,从包含两列和 10 行的基表开始。第一列是自动递增的列,范围为 -5 到 5。第二列始终为 3。

我添加了第三列,其表达式将“3”列除以第一列。这将导致一行出现 div0 异常。

对于这一行,我希望它使用我提供的默认值。它确实如此,但也将默认值应用于剩余的 4 行。

输出:

如何添加处理,以便如果单个行有问题,它将使用默认值,同时继续对后续行使用表达式?

请注意,我不能简单地使用此处描述的 IIF来检查此类问题,因为所使用的表达式是动态的,并且作为自定义数据的一种方式由用户提供。

完整的代码来重现这个:

0 投票
1 回答
435 浏览

ado.net - 无法在 Asp.Net 5 中获取 System.Data 的引用

我正在使用 ASP.NET5 MVC6 和 Classic Ado.Net 构建一个 Web 应用程序。但是我们不能参考 System.Data。nuget 包中只有两个包可用

除此之外,每当我从 nuget 添加 System.Data.Common 时,我的项目都不会编译。

我需要控制器的操作方法中的 DataSet 和 Datatable 。

我们如何在 Asp.Net 5 中得到这个?

我已经从这个问题中得到了答案。

0 投票
0 回答
105 浏览

c# - 准备好的 SQL 语句和 IDisposable

注意:这不是SqlCommand.Prepare() 做什么以及何时应该使用它的副本?SQLite/C# Connection Pooling 和 Prepared Statement Confusion或其他堆栈溢出问题。我不是在问准备好的语句是否适合我的用例。我在问如何将它们与 IDisposable 一起使用。尾注

我有一个使用大约 100 个 SQL 语句的 ac# 程序。using每次我需要它时,我都会在一个块内创建一个 SQLiteCommand :

我想通过使用准备好的语句来提高性能,以便每个语句编译一次并在程序的整个生命周期内重复使用。

我的困境是 DbCommand 实现了 I Disposable,并且我看到的每个示例都显示了在执行 SQL 语句后立即释放的命令。

执行 SQL 语句后处理 DbCommand 可以吗?那会有什么副作用?或者,如果我确实处理命令,我如何实现“编译一次执行多次”流程。

0 投票
0 回答
30 浏览

.net - SqlDataReader 中的序号列引用在行之间可以不同吗?

这可能看起来很疯狂,但我觉得不得不问。假设select *您读取数据行并获得 N 列的结果 SqlDataReader 的执行。现在阅读下一行。这些行中列的顺序是否有任何可能不同?

考虑这个 MSDN 博客中的图 1 。它显示每一行对于每个列数据段都有一组唯一的列标题。来自该博客的链接表格数据流协议确认每个“单元”都有唯一的 COLINFO 和 COLMTADATA。为什么会有这种重复,除非有可能它可能从一行到另一行不同?

这里有没有人引用 reader[name] 而不是 reader[int] 以避免这种潜在的陷阱?或者从每一行重新加载一组名称/整数对,以防序数发生变化?我知道使用列名更优雅,但对于从查询返回的较大数据集,是否“强烈推荐”?

0 投票
1 回答
1769 浏览

.net - 从 EnumerableRowCollection(Of System.Data.DataRow),将表分配给变量

我有一个在 EnumerableRowCollection(Of System.Data.DataRow) 中传递的方法,我希望能够使用底层数据表。最终我希望能够使用该数据表的列集合。

目前我使用

哪里x is EnumerableRowCollection(Of System.Data.DataRow

这很好用,除了行数为零的情况。

我确信底层数据表定义仍然存在,因为如果我针对 x '添加手表',我可以通过调试器访问它

在监视窗口中我看到

我追求的是 mydatatable

如果我尝试 x.Table 然后我得到

“表”不是“System.Collections.Generic.IEnumerable(Of System.Data.DataRow)”的成员。

在我的情况下, enumerablerowcollection 很可能是使用带有 orderby 的 LINQ 从数据表创建的

总之,即使 EnumerableRows 的计数为零,我也希望能够从 EnumerableRowCollection(Of System.Data.DataRow) 访问数据表。如果这是不可能的,那么请你帮我解释一下监视窗口如何显示这个。我可以添加我在监视窗口中看到的图像吗?我添加了调试器显示的图像,它如何获取此表信息 在此处输入图像描述

0 投票
1 回答
545 浏览

c# - 当 DataView.RowFilter 设置为不正确的过滤器时,不会引发预期的异常

System.Data.DataView.RowFilter用于表过滤。我有一个DateTime数据类型为“时间”的列,对于这个列,我使用以下过滤器:

时间<= '15.12.2015 11:38:03.000'

但我不小心打错了分隔秒和毫秒的点,而是输入了分号:

时间<= '15.12.2015 11:38:03:000'。

我在表中有一些数据,在第一种情况下它被过滤了,但第二种情况给出了空结果。

但是当我试图在项目之外重新创建这个问题时,我发现第二种情况会引发异常!

代码:

我已经检查了好几次,并且在我的项目中:

  • 不会抛出此异常。
  • RowFilter 等于分配"Time<= '15.12.2015 11:38:03:000'"后。
  • 当使用正确的过滤器表达式时,代码将继续执行。

我认为这可能是 .Net 4.0 错误并将我的测试应用程序的框架设置为它。结果相同:它抛出异常,但项目中没有异常。

在测试应用程序中,即使没有调试也会抛出异常,在发布版本中,因此它不依赖于调试器设置。

我已经仔细检查过我使用来自同一个库的相同类。

我在同一台 PC 上运行我的项目和测试应用程序。

RowFilter这是在将值设置为不正确的过滤器并且它毫无例外地接受它 之后的下一步的调试屏幕截图:成功设置了不正确的过滤器。

当没有引发预期的异常时,可能导致这种情况的原因是什么?

0 投票
0 回答
625 浏览

asp.net-mvc - 无法在 VS2015 MVC 项目中添加对某些程序集的引用

我对 MVC 比较陌生,所以也许我遗漏了一些东西。我正在使用 VS 2015 社区版、C# 2015 和 .NET Framework 4.5.2。

我有一个包含 2 个项目的 MVC 解决方案:TLM 和 TLM.Tests。两个项目中的所有 .cs 文件都对以下代码行感到满意:

使用 System.Data;

事实上,其中一个 .cshtml 文件有这一行:

@使用系统数据;

现在我将第三个项目添加到解决方案中,即一个名为 TLM.Helpers 的类库,以保存常用代码。(在 ASP.NET Web 表单中,它只会出现在 App_Code 文件夹中的 .cs 文件中。)但是,我无法将 System.Data 的 using 语句添加到该项目中的任何 .cs 文件中。事实上,我什至无法在这个项目中添加对该 DLL 的引用,尽管我看到其他 2 个项目中有这样的引用。

该新项目确实成功引用了 System、System.Collections.Generic 和 System.Linq。

其他类似问题的帖子建议验证该项目是为正确的框架版本构建的。该项目的属性页面甚至不提供目标框架的选择。它确实有“解决方案 DNX SDK 版本”的下拉列表,它指的是“版本 1.0.0-beta5”。我不知道那是指什么。

关于如何在这个项目中引用 System.Data 的任何建议?

谢谢。

0 投票
1 回答
146 浏览

c# - 使用 dnu install 安装实体框架 - 多参考问题

我正在使用 VS Code 和 DNX 开发 Web API。目前我需要安装实体框架。当我使用安装包时dnu install EntityFramework没有错误。"EntityFramework": "7.0.0-beta4"它在文件中添加条目package.json并更新project.lock.json.

但是当我使用编译应用程序时,dnu build我收到以下错误消息并且构建失败:

IHostingEnvironment 存在于 Microsoft.AspNet.Hosting.Abstractions 和 Microsoft.AspNet.Hosting.Interfaces 中

我的 DNX 版本是4.5.1

我不知道这个问题!有人请告诉我如何解决这个问题。

提前致谢。

更新:

"EntityFramework": "7.0.0-beta4"当我从文件中删除条目时project.json,运行dnu restore然后使用dnu build它重新编译是成功的。我的猜测是EntityFramework我的应用程序中已经默认安装了一个(?)。如果是这样,当我System.Data.Entity在控制器中添加命名空间时,它没有得到解决。

我收到的信息是:

命名空间“系统”中不存在类型或命名空间“数据”(您是否缺少程序集引用?)[dnx451,dnx451,dnxcore50,dnxcore50]

不会System.Data自动安装吗?

更新(project.json 文件)

0 投票
4 回答
23550 浏览

c# - .NET 系统类型到 SqlDbType

我正在寻找 .Net System.Type 和 SqlDbType 之间的智能转换。我发现它是以下想法:

上面的代码不是很好,是一种代码味道,这就是为什么我基于https://msdn.microsoft.com/en-us/library/cc716729( v=vs.110).aspx

有人知道如何以更清洁、更好和更好的方式获得相同的结果吗?

0 投票
0 回答
174 浏览

.net - 在 MS 企业库中枚举 DbProviderFactories 返回不同的结果

我有多个应用程序使用 MS Enterprise Library 和 Oracle ODP.Net 驱动程序连接到 Oracle。

一个应用程序,一个 Windows 服务,在尝试创建到 Oracle DB 的连接时抛出以下错误:

数据库“MyDBName”的连接字符串不存在或没有有效的提供程序。

另一个应用程序,一个 Web 服务,做同样的事情,而且运行良好。两者都在我的计算机上本地运行。

在 Windows 服务中,我检查了明显的情况:连接字符串实际上在那里,名称拼写正确,并且 Db 提供程序 Oracle.DataAccess.Client 在那里并且拼写正确。我还确认 ODP.net 已在 machine.config 中正确安装和配置(这必须是因为 Web 服务有效)。web 和 win 服务都使用 .net 4.5.1。所以我相信所有显而易见的事情都被排除了。

进入 ent lib 代码我发现异常的来源是因为这个方法在 windows 服务下调用时返回 false:

在 Web 服务下运行时返回 true。在这两种情况下,提供的 providerName 的值都是相同的 (Oracle.DataAccess.Client)。然后我查看了 GetFactoryClasses() 返回的 Rows,发现在 windows 服务下,只有少数(大约一半)注册的工厂类从 machine.config 中返回,而 Oracle 不在其中。所以这就是它失败的原因。为了让它正常工作,我在 app.config 中为我的服务添加了以下内容:

这些是直接从 machine.config 中复制出来的。

所以我的问题基本上是,为什么在相同版本的 .net 下运行的两个应用程序在枚举注册的 DbProviderFactories 时不会产生一致的结果?