问题标签 [ms-jet-ace]

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

ms-jet-ace - 使用 Microsoft.Jet.OLEDB.4.0 从 C# 将行插入 Access db,自动编号列设置为零

我正在使用 C# 和 Microsoft.Jet.OLEDB.4.0 提供程序将行插入 Access mdb。

是的,我知道 Access 很糟糕。这是一个巨大的遗留应用程序,其他一切正常。

该表有一个自动编号列。我插入行,但自动编号列设置为零。

我用谷歌搜索了这个问题并阅读了我能找到的关于这个主题的所有文章。有人建议为自动编号列插入 -1,但这不起作用。我能找到的其他建议都没有奏效。

我使用的是 OleDbParameter,而不是连接一个大的 SQL 文本字符串。

我已经尝试过有交易和没有交易的插入。没有不同。

如何让这个插入工作(即正确设置自动编号列内容)?

首先十分感谢,

亚当莱弗特

0 投票
2 回答
11128 浏览

c# - 使用 ADO.NET 创建新数据库 (.mdb)

如何创建一个空的 .mdb 文件?我正在使用 ADO.NET 和 C#。谢谢!

0 投票
4 回答
2090 浏览

database - 数据库中的数字“日期” - 如何使用“正常”日期与之交互?

我正在使用这个数据库,其中日期列是数值而不是日期值。

是的,我知道我可以通过单击鼠标来更改它,但是使用该数据库的所有应用程序都是由我的一位前任制作的(他之后的每个人都忽略了它并建立在它之上)。因此,如果我将其更改为 Date 很多应用程序将失败。:(

好吧,我正在概述该数据库,从一个特定日期到另一个。我尝试使用下拉列表,但正如您所知,一个列表中的一千个选项非常不方便,甚至丑陋。

我宁愿为日-月-年提供小的输入字段,但是数据库中的数字日期会出现华尔兹舞曲。我将不得不以某种方式将日期计算回数值......

必须有一个简单的解决方案。对?



我正在为应用程序使用 ASP(vbscript),它用于内部网络,并且我有一个 Access 数据库。

0 投票
4 回答
9332 浏览

c# - C# 问题:我加载 .MDB 文件、对其进行更改并将更改保存回原始文件的最简单方法是什么?

我正在进行的项目即将完成。我正在加载一个 .MDB 文件,在 DataGrid 上显示内容并尝试在 DataGrid 上获取这些更改并将它们保存回 .MDB 文件。我还将创建一个函数,允许我从一个 .MDB 文件中获取表并将其保存到另一个 .MDB 文件中。当然,如果我不知道如何将更改保存回 .MDB 文件,我将无法执行任何操作。

我对谷歌进行了广泛的研究,但我的问题没有答案。我认为自己是这个特定主题的初学者,所以请不要让答案太复杂——我需要最简单的方法来编辑 .MDB 文件!请提供编程示例。

  1. 假设我已经与 DataGrid 建立了连接。如何获取 Datagrid 所做的更改?我敢肯定这个回答很简单。
  2. 然后我需要知道如何获取这个 Datatable,将它插入到它来自的 Dataset 中,然后获取该 Dataset 并重写 .MDB 文件。(如果有办法只插入已更改的表,我会更喜欢。)

提前谢谢您,如果您需要更多信息,请告诉我。这是我可能要问的关于这个话题的最后一件事……谢天谢地。

编辑:

我正在使用的 .mdb 是Microsoft Access 数据库。(我什至不知道有多个 .mdb 文件)

我知道我不能通过流写入器或任何东西直接写入 .MDB 文件,但有没有办法可以生成一个已经包含 DataSet 信息的 .MDB 文件?或者是否有一种方法可以将表添加到已加载到 DataGrid 中的 .MDB 文件中。必须有办法!

同样,我需要一种在 C# 中以编程方式执行此操作的方法。

编辑:

好的,我的项目相当大,但我使用单独的类文件来处理所有数据库连接。我知道我的设计和来源真的很草率,但它完成了工作。我只和我在互联网上找到的例子一样好。

请记住,我只是以另一种形式连接到 DataGrid。让我知道您是否需要 Datagrid 表单中的代码(不过我不知道您为什么需要它)。DatabaseHandling.cs 处理 2 个 .MDB 文件。所以你会在那里看到两个数据集。我最终将使用它从一个数据集中获取表格并将它们放入另一个数据集中。我只需要弄清楚如何将这些值保存到 .MDB 文件中。

有没有办法做到这一点?一定有办法...

编辑:

根据我的研究和阅读......我认为答案就在我的眼皮底下。使用“更新()”命令。现在,虽然这再次确保实际上有一种简单的方法可以做到这一点,但我仍然面临一个问题,即我不知道如何使用这个更新命令。

也许我可以这样设置:

我认为可能会这样做,但我不想手动插入任何东西。我想同时做这两个:

  • 获取在 Datagrid 上更改的信息并更新我从中获取的 Access 数据库文件 (.mdb)
  • 创建一个函数,允许我从另一个 Access 数据库文件 (.mdb) 中获取表,并将它们替换为辅助 Access 数据库文件 (.mdb)。这两个文件将使用完全相同的结构,但其中包含不同的信息。

我希望有人对此提出答案……我的项目已经完成,等待的只是一个简单的答案。

再次提前感谢您。

编辑:

好吧……好消息。我已经想出了如何查询 .mdb 文件本身(我认为)。这是代码,它不起作用,因为由于我尝试使用的 sql 命令而出现运行时错误。这将把我带到我的下一个问题。

DatabaseHandling.cs 新增功能代码:

如您所见,我实际上已经设法对连接本身执行查询,我相信它是实际的 Access .MDB 文件。正如我所说,我对文件执行的 SQL 查询不起作用,并且在使用时会产生运行时错误。

我试图执行的命令应该从 .MDB 文件中获取一个表并覆盖不同 .MDB 文件的相同类型的表。我在上面尝试的 SQL 命令试图直接从 .mdb 文件中获取一个表,然后直接将其放入另一个表中——这不是我想要做的。我想从 .MDB 文件中获取所有信息——将表放入数据表中,然后将所有数据表添加到数据集(我已经完成)。我想为两个 .MDB 文件执行此操作。一旦我有两个数据集,我想从每个数据集中取出特定的表并将它们添加到每个文件中,如下所示:

  • DataSetA >>>>----- [添加表(覆盖它们)] ----->>>> DataSetB
  • DataSetB >>>>----- [添加表(覆盖它们)] ----->>>> DataSetA

我想把那些数据集拿走,然后把它们放回它们来自的每个 Access .MDB 文件中。基本上保持两个数据库同步。

所以我的问题,修改后,是:

  1. 如何创建一个 SQL 查询,通过覆盖现有的同名表将表添加到 .MDB 文件。查询应该能够在运行时动态创建,该数组用我要添加的表名替换变量。
  2. 如何获取 Datagrid 对 DataTable 所做的更改并将它们放回 DataTable(或 DataSet),以便我可以将它们发送到 .MDB 文件?

我试图尽可能详细地说明......因为我相信我没有很好地解释我的问题。现在这个问题已经变得太长了。我只是希望我能更好地解释这一点。:[

编辑:

感谢下面的用户,我想我几乎找到了解决方法——关键字about。下面是我更新的 DatabaseHandling.cs 代码。我收到运行时错误“数据类型不匹配”。考虑到我正在尝试将这些表复制到另一个具有完全相同设置的数据库中,我不知道这怎么可能。

为什么我会收到此错误?两张表完全相同。我究竟做错了什么?最坏的情况,在插入具有不同值的完全相同的结构表之前,如何删除其他 Access .MDB 文件中的表?

伙计,我希望我能弄清楚这一点......

编辑:

好吧,我已经走了一段距离。我的问题已经演变成一个新问题,因此值得单独提问。我已经回答了我的问题,因为现在我知道如何直接对我打开的连接执行查询。谢谢你们!

0 投票
1 回答
10027 浏览

java - 在 Java 中读取 Microsoft Access 文件

如何在 Java 中读取(和写入)MS Access 文件 (.mdb)?是否有任何用于 MS Access 的开源 jdbc 驱动程序?

0 投票
7 回答
3598 浏览

c# - Access 数据库引擎的优缺点。SQLite 之后的生活

前段时间我问了一个问题,关于哪个本地数据库适合我的情况。我需要从 .NET 代码和 VB6 访问数据库。压倒性的反应是 SQLite。但是,我决定放弃 SQLite,因为它的唯一 OLE DB 提供程序会为我的软件的每个部署副本收取版税。它还需要在每台 PC 上运行激活程序。

在评估其他选项(SQL Server Compact 版本 - 几乎没有功能的 OLE DB 提供程序,Firebird - 不想为另一个驱动程序付费等......)之后,我得出结论,唯一可行的选择是使用 .由 Microsoft Access(或 Jet 引擎)创建的 MDB 文件。

自 90 年代后期以来我就没有使用过它,所以我有以下问题想问那些有经验的人。

  1. 他们是否解决了数据库不时损坏的问题。
  2. 是通过 ADO.NET OLEDB Provider 从 c# 访问 MDB 还是有本机解决方案(我似乎找不到它)。
  3. Access 中真正糟糕的 SQL 编辑器是否有可行的替代方案?

谢谢。

0 投票
11 回答
21722 浏览

.net - MS Access (MDB) 并发

对于一个小型项目,我需要使用一个要求非常轻的简单数据库:很少的表,总共不超过几千条记录,2 或 3 个用户。我在.NET 环境中工作。

由于数据库服务器(即使是那些 Express 版本)在这种情况下似乎是一个巨大的矫枉过正,一个非常简单的 MDB 数据库可以满足大多数要求。但是,我担心并发性。我的想法是将 .mdb 文件放在网络共享上,让用户从基于 .NET 的客户端访问该文件。数据库主要针对只读操作,但用户有时也需要更新/删除记录。如果当时无法做到这一点(由于数据库被锁定或其他原因),我可以在客户端上保存更新并在以后处理它们。

问题本身涉及以下几点:

  • MDB 中如何处理并发读取?
  • MDB 中如何处理并发更新/删除?
  • 是否有锁的概念以及如何在 .NET 应用程序中利用它?
  • 将 MDB 文件放在网络共享上是好主意还是坏主意?

当我在 .NET 中工作时,我也很想知道如何检测任何并发问题并采取适当的措施。即,我应该捕获哪个异常以及您建议采取什么行动?

编辑:这可能是我对问题的错误描述,但大多数答案似乎都建议使用完整的数据库服务器。我确实了解安装服务器的区别和好处,并且实际上已经在 MSSQL 和 Oracle 上实施了相当数量的项目。但是,在这个问题中,我只关心 Access 及其并发问题,所以请不要建议使用数据库服务器。

谢谢你的帮助。

0 投票
10 回答
43870 浏览

ms-access - 如何提取 Access (.mdb) 数据库的架构?

我正在尝试提取 .mdb 数据库的架构,以便可以在其他地方重新创建数据库。

我怎样才能完成这样的事情?

0 投票
4 回答
10737 浏览

sql - Microsoft Jet 通配符:星号还是百分号?

Microsoft Jet 中的 LIKE 运算符中正确的多字符通配符是什么?什么设置会影响它(如果有)?我支持在 Microsoft Jet(在 Access 数据库上)上运行的旧 ASP 应用程序,它使用 LIKE 运算符中的 % 符号,但我有一个客户显然在他的环境中遇到问题,因为 % 字符被理解为常规字符,我假设他的多字符通配符是 *. 另外,我几乎可以肯定,在过去我使用 * 而不是 % 编写了带有查询的应用程序。最后,Microsoft Access(作为应用程序)也仅适用于 * 而不是 % (但我不确定它的相关性)。

我只花了大约 20 分钟在互联网上搜索,没有任何有用的结果,所以我认为在 stackoverflow 上提问会很有用。可能有人已经知道了,无论如何,最好将潜在答案保留在 stackoverflow 上,而不是任何其他随机讨论论坛。

0 投票
3 回答
11361 浏览

sql - 在 Delphi 中读取 MS Access mdb 文件(免费)?

我正在寻找一个 Delphi 组件/库来打开并从 mdb (MS Access) 数据库中读取。我不会写入数据库或显示数据;只需要使用 sql Access 支持的任何内容来读取数据库。

这是针对个人的副项目(编程不是我的付费工作),所以我需要一个免费或非常便宜的解决方案,它可以与 Delphi 6、Delphi 2007 或 Delphi 2009(所有专业版)中的任何一个一起使用。性能无关紧要,简单才是:)