- - PR -
VB.NETでODBC設定できない
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-05 13:57
VB.NETでWindowsアプリを作成しています。
ODBC接続でSQLサーバを使用するものなのですが アプリケーション配布の時に 個々のクライアントにODBC設定するのが面倒ですので プログラム上で行おうと思い「SQLConfigDataSource」を 利用しようと作成し始めました。 記述は以下のようにしています。 ' API 宣言 Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _ (ByVal hwndParent As Integer, ByVal fRequest As Integer,_ ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long と宣言して実行部を ' データソースの追加 Dim intRet As Integer Dim strDriver As String Dim strDSN As String ' ODBCドライバを指定する strDriver = "SQL Server" ' データソースとして登録する属性を NullChar で区切り指定する strDSN = "DSN=Mydb" & vbNullChar strDSN = strDSN & "Description=Mydb" & vbNullChar strDSN = strDSN & "Server=LocalServer" & vbNullChar strDSN = strDSN & "Database=Mydb" & vbNullChar strDSN = strDSN & "Trusted_Connection=No" & vbNullChar strDSN = strDSN & "LastUser=admin" & vbNullChar strDSN = strDSN & "Password=admin" & vbNullChar ' データソースの登録 intRet = SQLConfigDataSource(0, ODBC_ADD_DSN, strDriver, strDSN) ' 登録の成功・失敗の判断 If intRet Then MsgBox("データソースが登録されました。") Else MsgBox("登録されませんでした。") End If と記述しているのですが、実行すると 「strDSN」には 「"DSN=Mydb」だけしか入らず 「Description=Mydb」以降が結合されてきません。 Microsoftのページその他を色々調べたのですが 解決方法が見つけられなかったので ここに質問させていただきました。 どなたかご教授お願いいたします。 | ||||||||
|
投稿日時: 2006-01-05 14:34
お世話になります。
PINVOKEを参考にしてやってみたのですが、 以下のコードで問題なく登録できました。
| ||||||||
|
投稿日時: 2006-01-05 16:52
なおこ(・∀・)さんありがとうございました。
教えていただいたものを参考にやってみましたら 追加出来ました。感謝感謝です! しかし、 strDSN = strDSN & "LastUser=admin" & vbNullChar strDSN = strDSN & "Password=admin" & vbNullChar の部分の記述があると出来ません。 この部分は実際のプログラム使用時に接続文字列を与えてやれば 大丈夫だとは思うのですが、予め設定しておくのは やはりVB.NETでは無理なんでしょうか。 | ||||||||
|
投稿日時: 2006-01-05 17:16
こんにちは。
Yamと申します。 これはODBC云々の問題ではなく、文字列連結式の問題です。 HOGE = HOGE & "ABC" では文字列の連結はできません。 なおこ(・∀・)さんのように HOGE += "ABC" またはHOGE &= "ABC"で連結できます。 | ||||||||
|
投稿日時: 2006-01-05 17:37
できますよ。
CLR 的にはいずれも String.Concat ですので、速度も何もかもが同じです。 本題の方ですが、以下を見るに Valid なキーワードじゃないようですね。 SQLConfigDataSource _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-05 17:40
でも、LastUser というキーワードはあったような記憶があるんです。(^^;) バージョンによって違うだけなのかもしれません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-05 17:51
Yamです。
できますね。 昔、似たような式で連結できずにハマッた記憶があったのでうろ覚えで書いてしまいました。 (はて、あれは何の言語だったのだろう?) 失礼しました。 | ||||||||
|
投稿日時: 2006-01-05 17:52
じゃんぬねっとさんありがとうございます。
Yamさんもありがとうございます。 LastUser とPasswordのキーワードは 私もあるページで発見したので strDSN = strDSN & "LastUser=admin" & vbNullChar strDSN = strDSN & "Password=admin" & vbNullChar と記述してみたのですが、 この部分の設定は無理だと書いてあったページもあったので ホントに出来ないものなのかと調べていたところなのですが 今のところやはり無理っぽいです(>_<) |