- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 C# 在 Visual Studio 2008 上编写应用程序。该应用程序从 Access 文件中读取数据,然后生成一个 txt 文件。我正在使用一个包含 1.000.000 条记录和几乎 1GB 大小的 mdb 文件进行一些测试。代码是这样的,整个过程需要 8 到 10 分钟才能完成。
var connStr = string.Format("Provider =Microsoft.Jet.OLEDB.4.0; Data Source={0};Persist Security Info=False", this.dbPath);
using (var conn = new OleDbConnection(connStr))
{
using (var command = conn.CreateCommand())
{
command.CommandText = "SELECT * from Registros r, FOIDS f where r.TICKET = f.TICKET";
command.CommandType = System.Data.CommandType.Text;
conn.Open();
int i = 0;
string ticket = string.Empty;
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
i++;
if (!reader.IsDBNull(reader.GetOrdinal("r.TICKET")))
{
ticket=reader.GetString(reader.GetOrdinal("r.TICKET"));
// Some process
}
}
}
}
}
}
今天我收到了一个 accdb 文件 (Access 2007),所以我将我的连接字符串更改为这个文件:
connStr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False", this.dbPath);
但在更改之后,读取新文件每条记录大约需要 4-5 秒!!!所以,我的整个过程需要很多天才能完成!我试过将 accdb 文件转换为旧的 mdb 文件,然后用以前的连接字符串再次读取,但问题仍然存在。我认为是数据库本身的问题,但我不知道该怎么办,在互联网上我没有找到任何关于此类问题的信息。
有什么想法吗?有什么建议吗?
最佳答案
根据我 5 年前的经验。
其中一个 Access 数据库超过 20000 条记录,大小约为 150 MB。它开始减速,性能直线下降。所以迁移到 SQL。
你可以考虑使用 SQL compact edition,或者 sql lite
谢谢
关于c# - 从 C# 读取 Access 2007 (accdb) 文件的性能真的很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7605590/
我正在尝试将 accdb 文件从 Access 2010 中的使用转换为 Access 2007。我首先尝试使用 Access 2007 打开该文件,但出现错误 Unrecognized databa
我正在处理 Excel VBA 宏,并且想要从 MS Access 数据库(.accdb 文件)检索数据。 我尝试使用下面的连接字符串,它抛出运行时错误“438” Dim cn As Objec
我正在尝试创建一个程序来读取数据库并输出它。我已按照 http://www.codeproject.com/Articles/35018/Access-MS-Access-Databases-from
我最近将数据库从 .mdb (MS Access 2003) 更新为 .accdb (MS Access 2010)。 通过这次更新,我还将我的提供程序从:Microsoft.Jet.OLEDB.4.
我上这门课已经几天了,现在正在网上搜索以寻找解决方案。我在这里尝试做的是连接到扩展名为 .accdb 的 Access 2010 数据库 我已经成功连接到扩展名为 .mdb 但不是 的旧数据库>.ac
我一直在寻找打开 .accdb 数据库并从此文件读取/写入日期的解决方案。该文件保存在本地而不是服务器上,该解决方案无需额外的库即可运行。 有人可以帮助我吗? 谢谢你的建议 最佳答案 我的建议是使用
我问了两个类似的问题: Use OLEDB to read AccessFile from Stream to DataSet Read Microsoft Access File(.accdb) b
我正在尝试创建一个使用Access 2007 DB(.accdb)的MVC应用程序。我可以使用DataSet创建模型。但是,如果我尝试使用EntityFramework创建模型,那么我无法摆脱VS20
我想我的问题会被认为是愚蠢的,但我真的被困住了。 如何查看 *.accdb 文件中的所有表? 我使用 Office 14 中的 Microsoft Access 打开和编辑该文件。然后我去Databa
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我正在使用 Visual Studio Community 2017 Access 2010 - 2016 年 我可以导入我创建的 Access 文件 从客户端发送的文件包含(表、查询、表单、宏和模块
使用下面的代码,当找不到运行提供程序时,我收到以下错误,下面的代码是从网上复制和编辑的,它以前使用.mdb文件,但我尝试将其更改为.accdb,因为这是我的格式需要它。我正在尝试制作一个宏,在运行时将
我使用 .accdb 文件作为 Java 桌面应用程序的数据库。该文件用作数据库,但我也可以打开它并查看所有数据,我也可以更改它而不使用该程序。有什么方法可以阻止该文件并且用户无法直接使用 Acces
我使用的是 MS Office 2010。我想创建一个 .mdb 数据库。我环顾四周,但不知道如何更改默认扩展名。 该数据库将用于练习 Java JDBC-ODBC 连接,为此我需要一个 .mdb 数
我不明白为什么我的代码无法保存到我的 .accdb 数据库中。 我正在从 .accdb 数据库文件中获取数据并将其显示在 DataGridView 中,然后允许对其进行更改。 (这是一个库存控制系统。
如果我有一个基本的 windows xp 系统、ruby 和一个 ms access 2007 文件(例如 c:/foo/bar.accdb)文件,读取该 .accdb 文件的侵入性最小的方法是什么。
我试图将 Access 数据库的大小保持在最低限度,并且需要删除以前使用但现在不需要的几个大图像。我的理解是 Access 文件 (.accdb) 将图像存储在数据库中。你知道是否可以删除它以及如何删
这两个扩展有什么区别? 我需要使用 ADODB 连接从 WORD 文件写入 Access 数据库 当我创建一个新的 Access 数据库时,它让我可以选择只制作一个 ACCDB 文件,而由于某种原因我
我有一个这样的文件: strPath = "S:\HR\Forms\forms_database.accdb" 我通过 WORD adodb.connection 连接到它 我的数据库应该是不同的扩展
我尝试自动创建 .accdb 数据库,但使用 create() 函数时出现编译错误: 我使用这个答案中的代码: Create an Access database file (.mdb or .acc
我是一名优秀的程序员,十分优秀!