2

テスト環境と、DB2 データベースと VB.net プロジェクトを使用した実稼働環境があります。最近、74 列のテーブルに 4 列を追加して、合計 78 列になりました。この変更はしばらくの間テスト環境で行われていましたが、昨日本番環境に追加されました。VB.net コード (test および prod) では、Select * FROM TABLENAMEステートメントを使用してデータベースから単一の行を取得し、それを表示します。テスト環境ではすべてが完全に機能しますが、コードを実行して本番データベースを指すと、新しく追加された 4 つの列が結果に含まれず、そのデータにアクセスしようとするとエラーが発生します。

ここが奇妙になるところです。selectステートメントで新しい列に明示的に名前を付けると、それらが含まれ、すべて問題ありません。ベスト プラクティスとして、列に明示的に名前を付ける必要があることはわかっています。それが私たちがやろうとしていることですが、何が起こっているのかを理解する必要があります。

さらなる観察:

  • System i Navigator を使用Select * FROM TABLENAMEして実稼働データベースにクエリを入力すると、4 つの新しい列を含むすべての列が返されます。
  • テストのDBと本番のDBにアクセスするためにまったく同じVB.NETコードを使用しています...プロジェクトを実行し、接続文字列をTestingDBからProductionDBに変更するだけなので、異なるデータオブジェクトバージョンの可能性を排除しました(私は思う)など

そのため、System i ナビゲーター (を使用SELECT *) を使用すると、列が表示されます。VB.NET コードで明示的に名前を指定すると、列が表示されます。ただし、Select *VB.NET コードで使用すると、4 つの新しい列が除外されます (ただし、製品版のみ)。

誰かが以前にこのような行動を見たことがありますか?

4

1 に答える 1

0

削除してから、ODBC 接続を再作成してみてください。接続には「メモリ」があり、ソースへの変更が接続ファイルに反映されていないようです。

于 2013-05-28T18:52:05.157 に答える