问题标签 [dao]

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

ms-access - 带有 Access 2007 的 DAO 中的奇怪字段分配问题

这是我上一个问题的后续。

一旦我解决了参考文献的问题,我遇到了另一个非常奇怪的问题。基本上,我在表单上的按钮后面有以下内容:

我现在已经链接了引用,在第二行放置了一个断点,并在 Recordset("Att") 上添加了一个监视。当执行在断点处停止时,我可以从手表中看到 Recordset("Att") 返回 Variant/Object/Field2 类型的值,并且该字段包含几乎我期望的内容。

但是当我跨过第二行(允许它执行)时,会弹出以下错误:“对象变量或未设置块变量

当然,attachmentField 完成后没有分配任何内容。我错过了什么?

0 投票
2 回答
800 浏览

php - 一个大 DAO 还是多个较小的 DAO?

如果我必须将一个对象保存到具有关系的数据库中,我是让那个 dao 自己完成所有保存,还是委托给其他 DAO。如果它应该委托给其他 DAO,应该在 DAO 本身中完成,还是在上面的层(如服务层)中完成?我会为此使用 ORM,除了在 PHP 中,还没有什么好东西存在。

0 投票
2 回答
18390 浏览

java - 从 POJO 获取带注释的休眠表名

我有一个实体,其声明大致如下:

我正在制作一个通用的 DAO 类,这样做我想检索“myUserTable”名称。有什么办法可以达到这个名字吗?

0 投票
10 回答
17422 浏览

architecture - 为什么将 DAO 层置于持久层之上(如 JDO 或 Hibernate)

数据访问对象 (DAO) 是一种常见的设计模式,由 Sun 推荐。但最早的 Java DAO 示例直接与关系数据库交互——它们本质上是在进行对象关系映射 (ORM)。现在,我看到 DAO 是在 JDO 和 Hibernate 等成熟的 ORM 框架之上,我想知道这是否真的是一个好主意。

我正在开发一个使用 JDO 作为持久层的 Web 服务,并且正在考虑是否引入 DAO。在处理包含其他对象映射的特定类时,我预见到一个问题:

JDO 足够聪明地将它映射到“BOOKS”和“BOOKDESCRIPTIONS”表之间的外键约束。它透明地加载 BookDescription 对象(我相信使用延迟加载),并在持久化 Book 对象时持久化它们。

如果我引入一个“数据访问层”,写一个像BookDao这样的类,把所有的JDO代码都封装在里面,那么这个JDO对子对象的透明加载是不是绕过了数据访问层呢?为了一致性,不应该通过一些 BookDescriptionDao 对象(或 BookDao.loadDescription 方法)加载和持久化所有 BookDescription 对象吗?然而,以这种方式重构会使操作模型变得不必要地复杂。

所以我的问题是,直接在业务层调用 JDO(或 Hibernate,或任何你喜欢的 ORM)有什么问题?它的语法已经非常简洁,并且与数据存储无关。如果有的话,将它封装在数据访问对象中的好处是什么?

0 投票
2 回答
2741 浏览

spring - 在 Spring 中同时访问 JDBC ResultSet

我在 Spring JDBC DAO 中处理大量数据。DAO 直接在对象上返回一个迭代器,该对象使用take()对有界BlockingQueue进行操作,而检索操作发生在单独的线程中(使用ExecutorService)。

在此线程中,我看到以下行为:检索有效,但对ResultSet的某些调用导致调用挂起。这些电话是

  • isClosed()
  • isLast()

但不是

  • isAfterLast()
  • isBeforeFirst()
  • 是第一()

显然我需要知道最后一个元素是什么(为了将一个特殊元素插入到阻塞队列中,在迭代器 hasNext() 方法中产生 false )。我可以通过在将对象放入BlockingQueue之前找出ResultSet中的行数来解决它,但这感觉有点笨拙。是否有使用 ResultSet 的线程安全方式?

切换到多线程数据源(我测试了 C3POs ComboPooledDataSource)似乎没有帮助。

注意:这个问题是我首先(错误地)在这里发现的

0 投票
5 回答
2826 浏览

delphi - 使用 DAO 执行查询

我想使用 DAO 对 Access 数据库执行查询列表。“Database.Execute()”方法似乎适用于此,它只能执行“操作查询”,即不返回结果集的查询(MSDN 参考)。对于返回记录的查询,可以使用“Database.OpenRecordset()”。如果传递了错误类型的查询,这两种方法都会抛出异常。

在列表中同时拥有操作查询和选择查询,我如何预先决定哪些会返回记录,哪些不会?

0 投票
5 回答
1049 浏览

php - OOP DAO 设计问题

快速背景:我正在用 PHP 编程,我有一个域模型,它有一个单独的数据访问层(DAO 类),负责从数据库中获取数据并创建域类。

假设我有一个 DAO 类负责创建groupgroupList对象。您可以将群组想象为社交网络的一个组成部分;尽管对于这个问题,它们是什么并不重要。

我需要能够要求 DAO根据各种不同的标准为我制作各种groupList对象:

  • 最近添加的组
  • 最受欢迎的团体
  • 被管理员标识为“精选”的群组
  • 用特定标签标记的组
  • 与某个关键字匹配的组
  • 特定类别中的组
  • 某个人创建的群组
  • 在某一天创建的组

其中一些我现在实际上并不需要,但我可以想象在项目完成之前我会需要它们。现在我从一个不错的简单 DAO 方法开始:createList。这很好用。您可以将伪代码视为:

随着我的应用程序的进展,我创建了一个新方法createFeaturedList。这很好用。但它实际上与createList非常相似,只是查询略有不同。大约 150 行代码的其余大部分是相同的。

那么...对于我需要的所有略有不同的情况,我该怎么办?大多数时候,我真的只是想根据某些标准对列表进行过滤和排序。问题是——我应该:

a)创建许多专注的创作方法,例如:

  • 创建列表()
  • 创建类别列表(类别对象)
  • 创建用户列表(用户对象)
  • 创建标签列表(标签)
  • 创建流行列表()

或者

b)创建一个可以做所有事情的 BIG 方法: - createList ( searchString, orderBy, filterByCategoryObject=null, filterByUserObject=null )

我非常喜欢(a)的想法,因为我的 DAO 接口更简单,不太可能需要更改(例如:当我突然需要传递一个日期来比较时添加另一个参数)当你有搜索之类的东西时,困难就来了您希望能够与其他参数组合的关键字;例如:搜索类别列表、搜索热门列表、搜索标签列表等... (a) 是我开始使用的。

我对重构 (b) 进行了调情,但我可以看到我的方法变得非常大而且非常复杂,而且在构建 SQL 时有很多“if”和“select”来处理不同的情况,并且输入该方法的许多参数。但至少这一切都在一个地方。你可以把东西结合起来;例如:一个用户的组,用 blah 标记,匹配关键字 blah。

0 投票
2 回答
5482 浏览

c# - C# 和 DAO。为什么 RS.Fields("ColName") 不起作用?

最后一条指令适用于 VBA 或 VB.NET 我想,为什么它不适用于 C#?

0 投票
6 回答
1899 浏览

ms-access - 打开带有 2 个“扩展名”的文件时出现 Jet 错误 3011

当我尝试使用 Jet 打开带有 2 个“扩展名”(“filename.tst.csv”)的文件时,遇到了 Jet 抛出错误 3011 的问题。

运行时错误“3011”

Microsoft Jet 数据库引擎找不到对象“filename.tst.csv”。确保对象存在并且正确拼写其名称和路径名。

代码如下所示:

我已经将问题追踪为第二个扩展名(或明显的扩展名)“.tst”,但我不确定为什么会发生错误,我无法通过谷歌或通过这里找到答案 - 但是我想有人可能对这些限制有所了解。

这是在 VB6 中使用 DAO 3.6。

0 投票
1 回答
1195 浏览

excel - 如何使用 CDaoDatabase 打开 Excel 2007 (xlsx) 文件

使用 afxdao.h 中定义的 CDaoDatabase,如何打开 Excel 2007 (xlsx) 文件?我可以使用连接字符串 Excel 8.0;HDR=NO;IMEX=1 打开 Excel 2003 (xls) 文件,有人知道我该怎么做吗?

谢谢!