2009-03-04 18 views
2

Informixデータベースを使用しており、.NETからODBCを使用して正常に接続しています。使用している接続文字列は次のとおりです。Informix for .NETの接続文字列

DRIVER={IBM INFORMIX ODBC RIVER}; 
UID=username; PWD=password; 
DATABASE=our_database; 
HOST=devsrv01; 
SERVER=devsrv01_tcp; 
SERVICE=ids9tcp2; 
PROTOCOL=onsoctcp; 
CLIENT_LOCALE=en_US.CP1252; 
DB_LOCALE=en_US.819; 

私たちは、ODBCから変更するとoutlined on their siteとしてIBMのSDKとライブラリを使用します。

使用しているコードは次のとおりです。

string ConnectionString = "Database=our_database; Server=172.22.0.0:1528; UID=username; Password=password; "; 

try 
{        
    IfxConnection conn = new IfxConnection(ConnectionString); 
    conn.Open(); 
} 
catch (IfxException ex) 
{} 

conn.Open()は例外をスローします。

ERROR [08001] [IBM] SQL30081N通信エラーが検出されました。使用されている通信プロトコル: "TCP/IP"。使用されている通信API:「ソケット」。エラーが検出された場所: "172.22.0.0"エラーを検出する通信機能: "recv"。プロトコル固有のエラーコード: ""、 ""、 "0" SQLSTATE = 08001

「ああ!」あなたは言う。ただ "PROTOCOL=onsoctcp;"に入れてください。しかし、これによりIfxConnection(ConnectionString);コマンドがArgumentExceptionにスローされます。接続文字列に無効な<field>=<value>設定が含まれている場合、この例外がスローされます。もし私がごみを=ジャンクに入れたら;私はそれがプロトコル(またはPRO)フィールドを認識しないと思うように、同じArgumentExceptionをスローします。

(FYI)172.22.0.0はdevsrv01のIPであり、0.0を終了しません。

答えて

3

Persist Security Info=True;Authentication=Server; 

なぜ私に質問しないでください。私はそれを機能させるだけです。

+1ありがとうございます。ご協力いただきありがとうございます。

1

http://www.connectionstrings.com/にチェックを入れましたか?それはいくつかの洞察を提供するかもしれません。

+0

まず最初に試したことがあります。また、 "Protocol = onsoctcp;" –

1

IBM Informix .NET Povider Guide 4.10マニュアルでは、プロトコルではなくプロトコルまたはPROを使用しています。キーワードは大文字と小文字を区別しますか?この表記法は、そうであることを示唆していますが、確かに.NETについては十分にわかりません。また、PROTOCOLを使用するときにエラーが発生すると、大文字と小文字が区別される可能性があります。

+0

アイデアありがとう。明日それを試してみる。それがうまくいくなら、叫び声を聞きなさい。 –

1

.NET、Informix CSDK(DRDAではなく)、ADO.NETを使いたい場合、Visual Studioのデータ接続リストにデータベースを追加するのが最も簡単です(表示 - >サーバーエクスプローラを開き、「データベースに接続」ボタンをクリックして、フォームに記入してください(これは、CSDKにVisual Studio Extensionsをインストールしたと仮定しています...))。

次に「(接続文字列)」のタイプの新しい設定を追加し、設定]タブに移動し、プロジェクトのプロパティに行くと入れ値のため:だから

Database=mydatabase;Password=mypassword;Server=myserver;User ID=myuser" 

app.configをで(:\ WINDOWS \ System32 \ Drivers \ Etc \ HostsにC)および/またはInformixのデータベース接続を持つ

<add name="MyApplication.Properties.Settings.MyConnectionString" 
    connectionString="Database=mydatabase;Password=mypassword;Server=myserver;User ID=myuser" 
    providerName="IBM.Data.Informix" /> 

また、データベースとサーバがhostsファイルに設定されていることを確認してください:それはこのようになります。スタートメニューにあるツール 'inetd32.exe' ...

また、サーバーエクスプローラウィンドウのデータベースからテーブルなどをVisual Studioの開いているXSDファイルにドラッグすると、自動的に接続文字列が構成に追加され、すべての設定が入力されますデータセットとCRUDレイヤーを処理します(何らかの理由でVSが最新のドライバを使用してInformixスキーマを取得できないため、エラーが発生することがあります...以下のようにとにかく)

、あなたは、接続文字列を使用することができます。私はeventaully答えが含まれるようにしたことが判明

IfxConnection myconnection = new IfxConnection(MyApplication.Properties.Settings.Default.MyConnectionString); 
+0

良いアイデア。これまで私はこのWTFを手に入れました。 http://www.ianquigley.com/A9_Create_a_new_IBM_database.html –

+0

私はVisual Studio Extensionsを使ってデータベースを作成していません...既存のものに接続するためだけです。 IBMの開発者の中には、私が壊れていると思っていたものがあります。 – uzbones