问题标签 [ado]

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

delphi - 如何在 MS Access 表中插入 800000 条记录?

我需要在 MS Access 表中插入 800000 条记录。我正在使用 Delphi 2007 和TAdoXxxx组件。该表包含一些整数字段、一个浮点字段和一个只有一个字符的文本字段。其中一个整数字段(不是 autoinc)有一个主键,另一个整数和浮点字段有两个索引。

使用插入数据AdoTable.AppendRecord(...)需要> 10 分钟,这是不可接受的,因为每次用户开始使用带有程序的新数据库时都会这样做。我无法预填充表格,因为数据来自另一个数据库(无法通过 访问ADO)。

tAdoCommand通过将记录写入制表符分隔的文本文件并使用对象执行,我设法缩短到大约 1 分钟

但我不喜欢这样的开销。

我认为必须有更好的方法。

编辑:

一些附加信息:

  • 选择 MS Access 是因为它不需要在目标机器上进行任何额外的安装,并且整个数据库都包含在一个可以轻松复制的文件中。
  • 这是一个单用户应用程序。
  • 数据将仅插入一次,并且在数据库的生命周期内不会更改。但是,该表包含一个附加字段,该字段用作标志以指示另一个数据库中的相应记录已由用户处理。
  • 一分钟可以接受的(最多 3 分钟也可以),我的解决方案有效,但对我来说似乎太复杂了,所以我认为应该有一种更简单的方法来做到这一点。
  • 插入数据后,表的性能相当不错。
  • 当我开始计划/实现与 Access 数据库一起使用的程序功能时,不需要该表。直到后来,当客户要求另一个功能时,它才变得必要。(不总是这样吗?)

编辑:

从到目前为止我得到的所有答案来看,似乎我已经获得了将这么多数据插入 Access 表的最快方法。感谢大家,感谢您的帮助。

0 投票
3 回答
625 浏览

asp-classic - 代码评论——我是在创造一台 Rube Goldberg 机器吗?

我正在通过 ADO 对数据库表进行大量调用。本着保持 DRY 的精神,我编写了以下函数来从记录集中返回一组值。这是兔子脑子吗?我主要使用它来获取一组组合框值等,从不用于巨大的值。示例用法(为简洁起见删除了错误处理):

然后我只是对返回的数组做任何我想做的事情。

我的问题是:像这样将所有记录集对象的创建/打开/错误处理抽象到它自己的函数调用中是否有意义?我是否正在建造一台 Rube Goldberg 机器,任何维护此代码的人都会诅咒我的名字?

我应该把它吸起来并编写一些宏来吐出 ADO 连接代码,而不是尝试在函数中执行它吗?

我对 asp 很陌生,所以我在它的功能/最佳实践中存在漏洞,所以任何输入都将不胜感激。

0 投票
1 回答
764 浏览

iis-7 - “AspCompat”属性问题

我客户的一个网站(我没有编码)昨天被他的主机迁移到了一个新的服务器上。所有这些使用 aspcompat 属性的 aspx 代码现在都会爆炸 -

<%@ Page Language="VB" AspCompat="true" %> '接下来我们需要使用 ADO 数据库连接对象在服务器上创建一个数据库连接对象。'创建一个 ADO 连接对象 adoCon = Server.CreateObject("ADODB.Connection")

'使用 DSN 连接 adoCon.Open ("DSN=Application") 设置到 Connection 对象的活动连接

因此,他显然在使用旧的 ADO 对象,并希望它能够与 COM 兼容。

我尝试在此文件夹级别设置一个新的应用程序池并将其设置为使用经典管道,但这也无济于事。

如果没有将他所有的 ADO 代码重写为 ADO.NET,我该怎么做才能让他启动并运行?这对他来说是此时的生产问题,所以时间对他来说至关重要。

谢谢!

0 投票
1 回答
904 浏览

asp-classic - ADO varchars 中是否有受限制的字符?

我们的 Intranet 上有一个简单的文件浏览器,使用 ASP/vbscript 构建。这些文件由脚本读取并添加到 ADO 记录集(未连接到数据库),因此我们可以轻松地对内容进行排序:

在一个特定文件夹中,我们收到一个错误:

这指向线

在上面的代码中。

我最初认为这是由长文件名引起的,但我检查了目录中所有文件的长度 - 虽然有些很长,但都在上面设置的 255 个字符的限制之下(最大的是 198 个字符长)。

有问题的文件夹中有近 2000 个 PDF,我无权更改内容,只是阅读(这是一个技术库)。这些文件的命名约定为“ID# - 论文标题”。有些具有特殊字符,例如 '、& 和 ( 或 ) - 其中一些是否会导致问题?我不记得以前有过这样的问题。我尝试在 Google 中搜索 ADO 中的特殊字符,但找不到任何似乎相关的内容。

谢谢 :-)

0 投票
5 回答
2463 浏览

.net - ADO.NET - 获取数据读取器值的最佳实践是什么?

只是想知道获取数据读取器值的最佳实践是什么。例如:

我一直在这样做:

但是注意到其他人在做:

我很想知道第二种方法的好处

0 投票
1 回答
1416 浏览

vba - 在 Word 中从 VBA 运行 Access QueryDefs

我在 Access 中创建参数化查询,并希望从 Word 的 VBA 模块中的 ADO 代码中调用它们。但是,我不确定调用参数化查询的语法。似乎无法在网上找到好的代码参考。

如果我有接受 Firstname 和 Lastname 作为参数的 qryGetRecordByFirstLast,如何从 VBA 模块在 ADO 中执行此代码?

0 投票
6 回答
3056 浏览

sql - 如何从asp页面访问sql server

我们有一个传统的本土时间表系统(ASP,microsoft sql server 2005),我需要将其克隆到另一台计算机以进行备份。(我对这些东西知之甚少,所以请温柔)

我已经完成了大部分工作(IIS、Sql Server、表导入/创建)。但是,访问时间表页面的 ASP 页面在访问 sql 服务器时阻塞。

这是它崩溃的行: conn.open Session("sConnStr")

这是连接字符串;

这是错误:

错误类型:Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified /mydir/mypage.asp, line 17 <== 如上所示

请注意,可以使用 Server Management Studio 将 Windows 指定为身份验证来访问 SQL Server 上的数据库。但是,当我尝试使用 SQL 身份验证时,我收到消息“用户未与受信任的 SQL 连接关联”。

问题:

  • 如何在 SQL Server 2005 上设置用户/密码?
  • 什么是默认驱动程序,我需要获取/设置它吗?
  • 当它谈到数据源名称时(参见上述连接字符串中的“MYDATABASE”),它是在谈论您在管理工作室对象资源管理器的“数据库”下看到的条目之一吗?

感谢您的回复!到目前为止,没有运气。通过这样做,我设法通过管理工作室对象资源管理器访问数据库;

  1. 启用 SQL 身份验证

    ....解决方案 要解决此问题,请按照说明设置用户身份验证。SQL Server 2000:

    转到开始 > 程序 > Microsoft SQL Server > 企业管理器 右键单击​​服务器名称,选择属性 > 安全 在身份验证下,选择 SQL Server 和 Windows 服务器必须停止并重新启动才能生效

    SQL Server 2005:

    转到开始 > 程序 > Microsoft SQL Server 2005 > SQL Server Management Studio 右键单击​​服务器名称,选择属性 > 服务器身份验证下的安全性,选择 SQL Server 和 Windows 身份验证模式服务器必须停止并重新启动,然后才能执行此操作影响...”

  2. 还有这个

    将所有者更改为用于访问数据库的所有者

    Microsoft SQL Server 管理工作室

    右键单击数据库,更改所有者

但我仍然收到完全相同的错误消息!

0 投票
7 回答
1783 浏览

sql - 如何将 SQL 数据顺序从行更改为列?

我有一段代码按字母顺序从网页上的数据库ACROSS 3 列中写入数据。

例子:

我需要按字母顺序显示它 DOWN the columns,如下所示:

请记住,我有大约 100 个数据结果,它将显示第一列中的前 1/3 降序,然后开始一个新列并继续,将其分成 3 个相等的部分。

我现在对行进行排序的代码是:

提前感谢您的帮助。我不写代码,所以我尝试了几个小时来改变它但没有成功。

0 投票
4 回答
15733 浏览

ms-access - 使用vbs自动查询访问db表并将其转换为excel

我有一个 Access 数据库。我想Data_01每天使用 VBScript 中的 ADO 自动查询表格并将结果导出到 Excel 电子表格。目前我在 ADO 方面的技能还很欠缺。

  1. 我有一个日期时间列,我将从昨天和今天选择项目。在 GUI 查询中,标准将是Between Date() And Date()-1
  2. 我有一PartNumber列我想选择一个特定的零件号。在 GUI 查询中,标准将是Series 400
  3. 然后,我想根据项目 1. 和 2 中的条件选择其他列。
  4. 我也想获得列的标题行。

我目前将整个表导出到 Excel,然后使用 VBScript 选择我想要的列,然后删除所有不需要的数据,然后为我的最终输出文件自动调整列。这似乎是处理器和时间密集型的。

0 投票
3 回答
645 浏览

sql - Database Disk Queue 太高,怎么办?

我正在使用的大型数据库存在一个问题,该数据库驻留在一个驱动器上 - 该数据库包含大约十几个表,其中两个主要的表大约为 1GB,不能更小。我的问题是,即使使用数据库的网站空闲,数据库驱动器的磁盘队列也在 96% 到 100% 左右。可以进行哪些优化或问题的根源是什么 磁盘上的数据库总共为 16GB,几乎所有数据都是必需的——交易数据、客户信息和库存详细信息。
无论网站流量如何,磁盘队列总是很高的原因是什么?
可以做些什么来帮助提高这种大小的数据库的性能?

任何建议,将不胜感激!

该数据库是在 Windows Server 2003 上运行的 MS SQL 2000 数据库,如所述大小为 16GB(磁盘上的数据文件大小)。

谢谢