问题标签 [ado.net]

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

asp.net - 使用 SqlDataSource 或 ObjectDataSource 时如何关闭连接/数据读取器

在 beta 测试期间,我们发现了连接池错误消息。因此,我一直在浏览代码并关闭未关闭的 SqlDataReader 对象。我需要知道的是如何关闭在 SqlDataSource 或 ObjectDataSource 标记的 SelectStatement 属性中指定的数据读取器(或者是否需要关闭)。如果不处理,会不会有连接泄漏?

提前致谢 !

0 投票
3 回答
2837 浏览

.net - 数据库本地化 - 查找列表 - 更智能的方式

我希望在数据库中添加一些查找列表,但我希望它们易于本地化(SQL 2005,ADO.NET)

这将包括:

  • 同时轻松管理多种语言
  • 从数据库中轻松检索值
  • 备用语言(如果缺少所选语言)

我正在考虑有一个表来存储多语言查找列表(对不同的语言使用相同的 ID)并使用一个函数来返回查找列表的值 - 通过接收 ID 和语言。

陷阱之一是我必须手动向使用查找列表的每个查询添加语言参数。

我正在寻找一种解决方案,可以让我将参数作为“会话/全局变量”发送,或者使用 sql 查询自动发送参数,以及自行检索它的函数(自动附加参数,要么能够读取参数)。

解决方案可能看起来像这样,但我不介意它是否不同,只要它没有将参数显式地提供给查询(伪代码):

澄清:

  1. 通常查询看起来像这样(记住使用查找功能):

    SELECT .., GetLookupList1(lookup_ID, language), .. FROM TABLE

GetLookupList1 是一个用户定义的函数,用于检索查找表的查找值。通过使用此功能,SQL 代码更易于阅读和维护。

函数的主体类似于:

  1. 我想要的是能够将语言参数从函数中删除为某种静态变量,仅适用于当前连接/语句/命令,因此查询看起来像

    SELECT .., GetLookupList1(lookup_ID), .. FROM TABLE

0 投票
3 回答
3183 浏览

.net - 从 WCF/ADO.NET 数据服务中的请求正文接收参数

我正在尝试发布到 ADO.NET 数据服务,但参数似乎在此过程中丢失了。

我得到了类似的东西:

我使用prototype.js进行ajax调用:

如果我用“方法:'GET'”和“WebInvoke(Method =“POST”)”替换“方法:'POST'”和“WebGet”一切正常,但现在(使用post)我得到的是:

错误请求 - 查询语法错误。

从服务。

唯一的解决方法(我不想使用)是即使在我执行帖子时也发送 URL 中的所有参数。欢迎任何想法。

0 投票
1 回答
1260 浏览

vb.net - ADO.NET 数据服务查询拦截器 - 谁能告诉我这个 C# 的 VB 语法?

我对 VB.NET 很陌生 - 我正在努力在以下代码片段中转换方法的签名。表达式<...>> 位。

提前致谢。

0 投票
2 回答
3928 浏览

c# - 为什么 OdbcCommand.ExecuteScalar() 会抛出 AccessViolationException?

我有一段代码旨在从数据库表中提取文本描述并将它们保存到文本文件中。它看起来像这样(C# .NET):

此代码已成功将部分数据保存到 .txt 文件,但对于许多行,以下行会引发 AccessViolationException:

异常文本是“尝试读取或写入受保护的内存。这通常表明其他内存已损坏”。

该程序通常会在表的相同行上引发异常,但它似乎不是 100% 一致的。有时,过去抛出异常的数据会突然起作用。

毫无疑问,有些人想知道为什么我不只是在 getItemsCommand 中选择 ID、ITEMDESCRIPTION FROM ITEMS 并跳过第二个查询。实际上,我最初是这样做的,并且在使用 getItemsCommand.GetString() 时遇到了同样的错误。我担心数据集可能占用了太多内存,这可能是导致错误的原因。所以我决定尝试这种方法,看看它是否有帮助。它没有。有谁知道为什么会发生这种情况?

顺便说一句,ID 是一个 INT 并且 ITEMDESCRIPTION 是一个 VARCHAR(32000) 列。如果有什么不同,数据库是 Borland Interbase 6.0 (Ick!)

编辑:在描述抛出异常的位置时,我给出了错误的行!啊!!现在修好了。另外,到目前为止,我已经尝试了建议的方法,但它们没有帮助。但是,我发现只有数据库中非常旧的记录导致了这个错误,这很奇怪。如果我将查询更改为仅提取过去 5 年插入的记录,则没有问题。有人向我建议这可能是编码转换问题或类似的问题?

更新:解决了。这个问题原来是我们不太可靠的数据库软件的 ODBC 驱动程序中的一个错误。使用其他驱动程序的解决方法解决了该问题。

0 投票
4 回答
13014 浏览

search - 使用参数使用 Like 运算符避免 SQL 查询中的 SQL 注入?

从我的前任那里接过一些代码,我发现了一个使用 Like 运算符的查询:

试图避免 SQL 注入问题并将其参数化,但我不太确定如何实现。有什么建议么 ?

请注意,我需要一个经典 ADO.NET 的解决方案——我真的没有资格将此代码切换到 LINQ 之类的东西。

0 投票
2 回答
7236 浏览

database - 如何使用 DataSet 将数据从一个数据库传输到另一个数据库?

像往常一样,先介绍一些背景信息:

数据库 A(Access 数据库)- 保存一个表,其中包含我只需要两列的信息。无法访问数据库 A 的人将使用应用程序需要这两列中的信息。

数据库 B(Access 数据库)- 保存一个只包含两列的表(反映我们需要从表 A 中获取的内容)。数据库 B 可供应用程序的所有用户访问。一个问题是,其中一个列名与数据库 A 中的表中的不同。

我需要做的是通过一个会自动运行的实用程序传输必要的数据,比如每周一次(两个数据库不需要完全同步,只需关闭即可)。传输实用程序将从有权访问两个数据库的用户帐户运行(显然)。

这是我采取的方法(如果有更好的方法,请提出建议):

  1. 从数据库 A 中获取数据。它只是必要表中的两列。

  2. 使用 DataReader 对象和 WriterStream 对象将数据写入 [tablename].txt 文件。我已经这样做了,所以我可以使用 schema.ini 文件并强制数据列具有与数据库 B 中相同的名称。

  3. 创建一个 DataSet 对象,其中包含一个镜像数据库 B 中的表的 DataTable。

  4. 使用具有文本扩展属性 hdr=yes 和 fmt=delimited 的 Microsoft.Jet.OLEDB.4.0 提供程序将 .txt 文件中的信息吸入 DataTable(以匹配我的 schema.ini 文件设置和 .txt文件设置)。我正在使用 DataAdapter 来填充 DataTable。

  5. 创建另一个 DataSet 对象,其中包含一个镜像数据库 B 中的表的 DataTable。

  6. 从数据库 B 中获取信息,使其包含表中需要从数据库 A 更新的所有当前数据。我再次使用 DataAdapter 填充此 DataTable(与步骤 5 不同,因为它们是两者都使用不同的数据源)。

  7. 合并包含来自数据库 A(或 .txt 文件,技术上)数据的 DataTable。

  8. 使用更改更新数据库 B 的表。

我已经为 DataAdapter 手动编写了更新、删除和插入命令,该命令负责与数据库 B 通信。但是,这个逻辑从未使用过,因为 DataSet-From-Database-B.Merge(Dataset-From-TxtFile[tableName] ) 不会翻转 HasChanges 标志。这意味着 DataSet-From-Database-B.Update 不会触发任何命令。

那么有什么方法可以使用我正在使用的方法从 DataSet-From-TxtFile 获取数据以合并并应用于数据库 B?我在这里错过了关键的一步吗?

我知道我总是可以从数据库 B 的表中删除所有记录,然后只插入文本文件中的所有记录(即使我必须遍历 DataSet 中的每条记录并应用 row.SetAdded 以确保它触发 HasChanges 标志) ,但我宁愿让它每次只应用更改。

我正在使用 c# 和 2.0 框架(我意识到这意味着我可以使用 DataTables 和 TableAdapters 而不是 DataSets 和 DataAdapters,因为我只处理一个表,但无论如何)。

TIA

0 投票
2 回答
2330 浏览

.net - rhino-mocks - 很好的示例应用程序

我知道有几个关于 rhino-mocks 教程的问题。但我想知道是否有任何示例应用程序在使用 ado.net 的 n 层业务应用程序的上下文中使用 rhino-mocks。

我觉得 tutes 很好,但它们似乎并没有把所有东西都放在一起。因此,我正在寻找一个能够将全貌结合在一起的示例应用程序。

另外,我认为缺少专门处理模拟和测试数据访问层中的逻辑的示例。

干杯安东尼

0 投票
3 回答
250 浏览

asp.net - 针对 MS Access DB 设置此 asp.net 页面的最快方法。.

我有一个包含 3 个表的访问数据库。

  • 人们
  • 礼物
  • 人礼物

使用 VS 2008,启动和运行页面的最快方法是什么,它允许我对这些表运行查询并进行基本插入。

我希望将组合框绑定到表中的字段,以便用户可以单击一个人并单击一个礼物,然后他们单击“添加”。

0 投票
9 回答
265618 浏览

visual-studio - Microsoft.ACE.OLEDB.12.0 提供程序未注册

我有一个带有两个项目(一个 Word 模板项目和一个用于测试的 VB.Net 控制台应用程序)的 Visual Studio 2008 解决方案。这两个项目都引用了一个数据库项目,该项目打开了与 MS-Access 2007 数据库文件的连接,并引用了 System.Data.OleDb。在数据库项目中,我有一个检索数据表的函数,如下所示

当我从我的 Word 2007 模板项目中调用此函数时,一切正常;没有错误。但是当我从控制台应用程序运行它时,它会抛出以下异常

ex = {"'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册。"}

这两个项目具有相同的引用,并且当我第一次编写控制台应用程序时(不久前)它确实可以工作,但现在它已经停止工作。我一定错过了什么,但我不知道是什么。有任何想法吗?