2

.net データ プロバイダー経由でアドバンテージ データベース サーバーに接続しようとしましたが、テーブル、ビュー、ストアド プロシージャ (VS2010) を参照できません。

テーブルは表示されませんが、新しいクエリを介してクエリを実行し、選択を手動で作成できます

シンプルに見えますが、まだ解決策はありません

接続文字列:データ ソース=TestAuth;ユーザー ID=adssys プロバイダー: Advantage データベース サーバー用の .NET Framework データ プロバイダー 状態:オープン タイプ: Advantage データベース サーバー バージョン: 11.0.0.1

2つの異なるデータベースサーバーで試しましたが、テーブルを取得できません

Eclipse での jdbc 接続による同様の問題

何か案は?

前もって感謝します!

アリス

4

2 に答える 2

3

Visual Studio 2010 を使用してテーブルのリストを取得するには、いくつかの方法があります。最も簡単な方法は、サーバー エクスプローラーを使用して、Advantage Data Dictionary へのデータ接続を作成することです。接続が開かれると、サーバー エクスプローラーでテーブル、ビュー、およびストアド プロシージャのリストを表示できます。

コードでテーブルのリストを取得する場合は、AdsConnection オブジェクトのGetTableNames()またはGetDDObjects()メソッドを使用できます。GetTableNames は、テーブル名とビュー名の配列を返します。GetDDObjects は、指定されたオブジェクト タイプの配列を返します。

より一般的なアプローチは、system.tables を使用することです。SQL ステートメントを使用してこのテーブルを開くと、データベース内のすべてのテーブルに関する情報が返されます。以下の例を参照してください。

SELECT * FROM system.tables

GetDDObjects と system.tables は、データ ディクショナリに接続されている場合にのみ使用できます。GetTables は、ディクショナリまたはフリー テーブル接続のいずれかでリスト テーブルを返します。

于 2012-12-20T22:12:27.020 に答える
2

クリスさん、フィードバックありがとうございます。

問題が見つかりました。接続設定が間違っています。

SELECT * FROM system.tablesをクエリすると、エラー 5125「Advantage には、指定されたハンドルに関連付けられたデータ ディクショナリがありません。AdsCommand クエリの実行に失敗しました」がスローされます。これは何が間違っていたかを説明しています。データ辞書ではなくエイリアスを使用しました

サーバー エクスプローラーのテーブルが正しく設定されている

接続文字列:ユーザー ID=adssys;初期カタログ="C:\Program Files\Advantage 11.0\Help\ADS_DATA\IW.add"; ユーザー ID =adssys プロバイダー: Advantage データベース サーバー用の .NET Framework Data Provider状態:オープン タイプ: Advantage データベース サーバー バージョン: 11.0.0.1

于 2012-12-22T18:03:57.580 に答える