- PR -

接続文字列からユーザIDとパスワード取得

投稿者投稿内容
おいろん
常連さん
会議室デビュー日: 2008/03/06
投稿数: 32
投稿日時: 2008-04-03 11:19
<言語 VB.NET>

お世話になります。

SQLServer用接続文字列から、ユーザIDとパスワードを取得したいと考えています。

(例)
Provider=SQLOLEDB.1;Password=XXXX;Persist Security Info=True;User ID=user;Initial Catalog=iPCNet;Data Source=SERVER

この文字列から、
ユーザIDである「user」の4文字と、
パスワードである「XXXX」を取得したいと考えています。

ユーザIDとパスワードは環境によって異なるので文字数が一定しません。

自分なりに考えたのは、「;」を区切り文字として分割し、
ユーザIDは「USER ID=user」の頭9文字目以降を取得、
パスワードは「Password=XXXX」の頭10文字目以降を取得
と考えています。

もっと効率よく取得できる方法はないでしょうか?
よろしくお願いいたします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-04-03 11:54
indexofで"User ID="を検索して';'の直前までを切り出してもできますが、この程度の処理にかかる時間は全体から見ればゴミみたいなものなので、あまり面倒な方法でなければどれでもいいでしょう。
saki1208
ベテラン
会議室デビュー日: 2006/08/22
投稿数: 86
投稿日時: 2008-04-03 12:12
saki1208です。

ConnectionStringBuilderクラスに渡してやればプロパティで取得できませんか。

# スペル間違いを訂正

[ メッセージ編集済み 編集者: saki1208 編集日時 2008-04-03 15:39 ]
おいろん
常連さん
会議室デビュー日: 2008/03/06
投稿数: 32
投稿日時: 2008-04-03 12:59
mio様、saki1208様

返信ありがとうございます。

おかげ様で取得することができました!
本当にありがとうございました。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2008-04-03 13:34
引用:

おいろんさんの書き込み (2008-04-03 12:59) より:

mio様、saki1208様

返信ありがとうございます。

おかげ様で取得することができました!
本当にありがとうございました。


今後同じような質問をする方がいらっしゃるかも
しれませんので「どのようにして解決したか」を
書いておくといいかもしれませんね。

個人的にも、おいろんさんがどのように実装
されたかは興味深く思います。

よろしくお願いします。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
おいろん
常連さん
会議室デビュー日: 2008/03/06
投稿数: 32
投稿日時: 2008-04-03 14:32
実装内容を記載しておりませんでした。大変失礼いたしました。

ConnectionStringBuilderは.NET2.0からということで、
私は1.0を使用しており、使用することができませんでした。
(バージョンをお伝えしておりませんでした。申し訳ありません)

やり方としましては私が当初考えたとおり
';'を区切り文字として分割し、
indexofで"User ID="を検索して';'の直前までを切り出した形となります。

Dim strConstr As String ' 接続文字列
Dim strUserID As String ' 接続ユーザID

'接続文字列分割
Dim parts As String()
parts = Split(strConstr, ";", -1, CompareMethod.Binary)

Dim s As String
For Each s In parts
'ユーザ名取得
If s.IndexOf("User ID=") >= 0 Then
strUserID = s.Substring(
Exit For
End If
Next

.NET2.0ならば、ConectionStringBuilderですんなりいけるかと思います。
(まだ試していないですが)
saki1208
ベテラン
会議室デビュー日: 2006/08/22
投稿数: 86
投稿日時: 2008-04-03 15:47
saki1208です。

";"でsplitした後、"="でさらにsplitして
dictionaryに格納しとくってのもありかも。

ちなみに2.0でConnectionStringBuilderを
使用する方法は確認済みです。

[ メッセージ編集済み 編集者: saki1208 編集日時 2008-04-03 15:51 ]
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2008-04-03 16:09
おいろんさんありがとうございます。
Split で ; ごとに分割して、その中から User ID= を
探し出したという感じでしょうか。

引用:

saki1208さんの書き込み (2008-04-03 15:47) より:

";"でsplitした後、"="でさらにsplitして
dictionaryに格納しとくってのもありかも。


私も同じようなことを考えていました
その上で、"=" の左辺が "User ID" であるか判断して
(この場合大文字小文字を区別しない)一致したらば
右辺をユーザーIDとみなす、という感じですね。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。

スキルアップ/キャリアアップ(JOB@IT)