質問

接続文字列を使用してアクセスできるようにするデータベースを使用するASP.NET Webサイトがあります。このDBに接続するためのDSNのセットアップは成功しましたが、接続文字列を使用する正しい魔法を見つけることができません。

DSNの値を接続文字列に変換する簡単な方法はありますか? UIからは、これに対する明確な答えがないことを知っています...各dbベンダーは、必要なものに基づいてDSNを作成するための異なるUIを提供します。ただし、UIの下で、舞台裏で接続文字列を作成するようなことをしているのではないかと期待していました。それを見て、間違っていることを確認できました。これに希望はありますか?その場合、必要な情報を取得する方法についてのポインタはありますか?

(接続文字列が正しい形式であることを確認するためにconnectionstrings.comに行きましたが、何も機能していないようです...だから、この奇妙なdsnからの変換タクトを試しています。)

編集:はっきりしてはいけないことは、DSNエントリを持ちたくないということです。これを作成し、当面の間使用しましたが、それを削除し、dsnを使用せずに 接続文字列を使用できるようにしたいです。

役に立ちましたか?

解決

OLEDBを使用できる場合は、を作成できますUDLファイル。新しいテキストドキュメントtest.udlを作成し、ダブルクリックするだけです。ダイアログに入力し、メモ帳でバックアップを開きます。出来上がり-接続文字列があります。

ODBCは少し難しくなります。ODBCAdministratorからファイルDSNを作成するか、システムDSNのHKLM\Software\ODBC\ODBC.INI\<DSN Name>のレジストリを調べます。いくつかの名前/値のペアになります。これらを接続文字列に変換できるはずです。 \\Driverには実際のDLLがリストされるため、HKLM\Software\ODBC\ODBC Data Sources\\<DSN Name>からプロバイダー名を取得する必要があります。

OLEDB Provider for ODBCを使用できる場合は、UDLトリックを使用して、ODBCファイルDSNから接続文字列を作成することもできます。 ODBC接続文字列は、UDLの拡張プロパティにあります。

他のヒント

DSNを作成した場合、DSNは ConnectionStringです!

単にDSN=<YourDSNName>を使用してOdbcConnectionオブジェクトに渡すことができます。

たとえば、C#を使用:

string dsnName = "DSN=MyDSN";
using (OdbcConnection conn = new OdbcConnection(dsnName))
{
  conn.Open();
}

または、を使用できます。 OdbcConnectionStringBuilder クラスとそのDSNプロパティを設定します。

レジストリに関するMark Brackettの回答を拡張するには、64ビットWindows上の32ビットODBCの場合、レジストリパスはHKLM \ Software \ Wow6432Node \ ODBC \ ODBC.INI \です

私の場合、次のことで十分でした:

  • ヘッダーを削除
  • すべての新しい行をセミコロンに置き換えます
  • ブレースをグループ区切りとして使用

これは、ODBC Data Source Administratorによって作成されたDSNファイルです(3番目のタブ<!>#8212; File DSN)

[ODBC]
DRIVER=MySQL ODBC 5.3 ANSI Driver
UID=MyUserName
PORT=3306
DATABASE=mydatabasename
SERVER=localhost

そして、接続文字列は次のようになりました:

DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=MyUserName;PORT=3306;DATABASE=mydatabasename;SERVER=localhost
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top