2

我们有一个测试环境和一个带有 DB2 数据库和 VB.net 项目的生产环境。我们最近在一个 74 列的表中添加了 4 列,总共有 78 列。我们在测试环境中进行了这种更改已经有一段时间了,但昨天才添加到生产中。在我们的 VB.net 代码(test 和 prod)中,我们使用一条Select * FROM TABLENAME语句从数据库中获取一行并显示它。一切都在测试环境中完美运行,但是当我们运行代码并指向生产数据库时,结果中不包含四个新添加的列,并且当我们尝试访问该数据时出现错误。

这就是奇怪的地方。如果我们在 select 语句中明确命名新列,它们就会被包含在内,一切都很好。我知道我们应该明确命名列,作为最佳实践,这就是我们要做的,但是,我必须弄清楚发生了什么。

进一步的观察:

  • 如果我使用 System i Navigator 将Select * FROM TABLENAME查询输入到生产数据库中,则会返回所有列,包括 4 个新列。
  • 我们正在使用完全相同的 VB.NET 代码来访问测试数据库和生产数据库......我们运行项目并将连接字符串从 TestingDB 更改为 ProductionDB,因此,我们消除了不同数据对象版本的可能性(我认为) , ETC。

SELECT *因此,如果我们使用 System i Navigator(使用),这些列就在那里。如果我们在 VB.NET 代码中明确命名它们,这些列就在那里。但是,如果我们Select *在 VB.NET 代码中使用,则排除了 4 个新列(但仅在生产版本中)。

有没有人见过这样的行为?

4

1 回答 1

0

尝试删除,然后重新创建 ODBC 连接。似乎连接具有“内存”,并且对源的更改不会反映在连接文件中。

于 2013-05-28T18:52:05.157 回答