C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ActiveSync通信によるDB接続


(過去ログ 128 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■76109 / inTopicNo.1)  ActiveSync通信によるDB接続
  
□投稿者/ アゲート (1回)-(2015/06/02(Tue) 13:46:09)

分類:[VB.NET/VB2005 以降] 

WindowsCE搭載のハンディ端末をPCにUSB接続し、ActiveSync通信にて
PCとネットワーク上で繋がっているDBサーバにアクセスするアプリケーションを作成しています。
ActiveSync接続後、プログラム一式をハンディ端末に配置してアプリケーションを起動、
DB接続を行うと正常にアクセスできたのですが、USBを抜き差しして接続しなおすと
"ユーザー 'xxxx' はログインできませんでした。(Microsoft SQL Server、エラー: 18456)"
とエラーになり接続できなくなってしまいます。

試行錯誤を繰り返した結果、実行ファイルを配置しているフォルダにある
「system.data.sqlclient.dll」を配置し直す(移動して戻すだけ)と正常に繋がることが判明したのですが、
アプリケーション起動中はdllファイルがロックされてしまう為配置し直しが行えません。
USBを抜き差しするたびにdllファイルを配置し直さないとDB接続が行えない状況です。

何故このような現象が起こってしまうのか、
ActiveSyncの仕様なのかもさっぱりわからず行き詰ってしまいました。
他に端末が無い為問題の切り分けが難しいのですが、
何か解決方法がおわかりの方いらっしゃいましたらご教示の程、宜しくお願い致します。

■環境
ハンディ端末:WindowsCE
接続PC:Windows7
DBサーバ:MS SQL Server 2005
開発環境:VisualStudio2008 .NET Compact Framework 3.5
言語:VB.NET
引用返信 編集キー/
■76189 / inTopicNo.2)  Re[1]: ActiveSync通信によるDB接続
□投稿者/ 通りすがり (14回)-(2015/06/09(Tue) 23:42:20)
GetModuleHandleでsystem.data.sqlclient.dllの参照ハンドルを取得して
そのハンドルをFreeLibraryに渡してdllの参照カウントがなくなるまで
解放した後でLoadLibraryすれば解決しそうですね。

VB.NETからでもGetModuleHandleもFreeLibrary、LoadLibraryも呼び出せま
すので(あるいはC++もしくはCでこのためだけのDLLを作成ってのもありかも)

ま、DLLの初期化が1度だけLoad時に行われるって性質があるので、こういう
問題は発生しがちだとは思います。



引用返信 編集キー/
■76194 / inTopicNo.3)  Re[2]: ActiveSync通信によるDB接続
□投稿者/ アゲート (2回)-(2015/06/10(Wed) 15:10:49)
No76189 (通りすがり さん) に返信

アドバイスありがとうございます。

> VB.NETからでもGetModuleHandleもFreeLibrary、LoadLibraryも呼び出せま
> すので(あるいはC++もしくはCでこのためだけのDLLを作成ってのもありかも)

C++について全くの無知なので、詳しい方に聞いてみようと思います。
ありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -