问题标签 [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.
c# - 如何在不导致所有行使用默认值的情况下处理单行上的 DataColumn 表达式异常?
我正在尝试使用 DataTable 使用 DataColumns 上的 Expression 属性对数据行执行计算。微软
我发现如果将表达式应用于行时出现异常,将使用默认值。这正是我想要的有问题的行。问题是每个后续行都将使用默认值而不是评估表达式。
在此示例中,从包含两列和 10 行的基表开始。第一列是自动递增的列,范围为 -5 到 5。第二列始终为 3。
我添加了第三列,其表达式将“3”列除以第一列。这将导致一行出现 div0 异常。
对于这一行,我希望它使用我提供的默认值。它确实如此,但也将默认值应用于剩余的 4 行。
输出:
如何添加处理,以便如果单个行有问题,它将使用默认值,同时继续对后续行使用表达式?
请注意,我不能简单地使用此处描述的 IIF来检查此类问题,因为所使用的表达式是动态的,并且作为自定义数据的一种方式由用户提供。
完整的代码来重现这个:
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 中得到这个?
我已经从这个问题中得到了答案。
c# - 准备好的 SQL 语句和 IDisposable
注意:这不是SqlCommand.Prepare() 做什么以及何时应该使用它的副本?或SQLite/C# Connection Pooling 和 Prepared Statement Confusion或其他堆栈溢出问题。我不是在问准备好的语句是否适合我的用例。我在问如何将它们与 IDisposable 一起使用。尾注
我有一个使用大约 100 个 SQL 语句的 ac# 程序。using
每次我需要它时,我都会在一个块内创建一个 SQLiteCommand :
我想通过使用准备好的语句来提高性能,以便每个语句编译一次并在程序的整个生命周期内重复使用。
我的困境是 DbCommand 实现了 I Disposable,并且我看到的每个示例都显示了在执行 SQL 语句后立即释放的命令。
执行 SQL 语句后不处理 DbCommand 可以吗?那会有什么副作用?或者,如果我确实处理命令,我如何实现“编译一次执行多次”流程。
.net - SqlDataReader 中的序号列引用在行之间可以不同吗?
这可能看起来很疯狂,但我觉得不得不问。假设select *
您读取数据行并获得 N 列的结果 SqlDataReader 的执行。现在阅读下一行。这些行中列的顺序是否有任何可能不同?
考虑这个 MSDN 博客中的图 1 。它显示每一行对于每个列数据段都有一组唯一的列标题。来自该博客的链接表格数据流协议确认每个“单元”都有唯一的 COLINFO 和 COLMTADATA。为什么会有这种重复,除非有可能它可能从一行到另一行不同?
这里有没有人引用 reader[name] 而不是 reader[int] 以避免这种潜在的陷阱?或者从每一行重新加载一组名称/整数对,以防序数发生变化?我知道使用列名更优雅,但对于从查询返回的较大数据集,是否“强烈推荐”?
.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) 访问数据表。如果这是不可能的,那么请你帮我解释一下监视窗口如何显示这个。我可以添加我在监视窗口中看到的图像吗?我添加了调试器显示的图像,它如何获取此表信息
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
这是在将值设置为不正确的过滤器并且它毫无例外地接受它
之后的下一步的调试屏幕截图:
当没有引发预期的异常时,可能导致这种情况的原因是什么?
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 的任何建议?
谢谢。
担
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 文件)
c# - .NET 系统类型到 SqlDbType
我正在寻找 .Net System.Type 和 SqlDbType 之间的智能转换。我发现它是以下想法:
上面的代码不是很好,是一种代码味道,这就是为什么我基于https://msdn.microsoft.com/en-us/library/cc716729( v=vs.110).aspx:
有人知道如何以更清洁、更好和更好的方式获得相同的结果吗?
.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 时不会产生一致的结果?