从VB.NET项目访问DB2数据库的奇怪行为

从VB.NET项目访问DB2数据库的奇怪行为,vb.net,db2,dao,Vb.net,Db2,Dao,我们有一个带有DB2数据库和VB.net项目的测试环境和生产环境。我们最近在一个74列的表中添加了4列,总共有78列。我们已经在测试环境中进行了一段时间的更改,但昨天刚刚添加到生产中。在我们的VB.net代码(test和prod)中,我们使用Select*fromtablename语句从数据库中获取一行并显示它。在测试环境中,一切都可以完美地工作,但是,当我们运行代码并指向生产数据库时,结果中不包括四个新添加的列,当我们尝试访问该数据时,会出现错误 这就是它变得奇怪的地方。如果我们在select

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

这就是它变得奇怪的地方。如果我们在select语句中显式地命名新列,它们就会被包括在内,一切正常。我知道,作为一种最佳实践,我们应该明确地命名这些列,这就是我们将要做的,但我必须弄清楚发生了什么

进一步的意见:

  • 如果我使用System I Navigator将
    Select*FROM TABLENAME
    查询输入到生产数据库中,将返回所有列,包括4个新列
  • 我们使用完全相同的VB.NET代码访问测试数据库和生产数据库。。。我们运行这个项目,只是将连接字符串从TestingDB更改为ProductionDB,所以我们消除了不同数据对象版本的可能性(我认为),等等
因此,如果我们使用System i Navigator(使用
SELECT*
),列就在那里。如果我们在VB.NET代码中显式命名这些列,它们就会出现。但是,如果我们在VB.NET代码中使用
Select*
,则4个新列将被排除在外(但仅在生产版本中)


以前有人见过这种行为吗

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

您是直接在程序中使用SQL,还是通过存储过程?另外,您得到的错误是什么(SQL代码)?感谢您的回复。是的,我们直接在代码中创建SQL语句…没有存储过程。当我们试图显示新列时,错误基本上是“列不存在”。如果我们在object viewer中查看结果,列就不存在了。听起来像是缓存问题。您是如何添加列的?如果您使用了ALTER TABLE,是否检查了它是否完整?@Cyborgx37这似乎不太可能是IBM i环境中的缓存问题(通过使用System i Navigator可以看出)。