DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ADO.Net(SQLServer)にてコネクションOPENエラー

環境/言語:[OS : Windows XP Professional / 言語 : Visual Basic .NET / .NET Framework : 2.0]
分類:[.NET]

【解決したい問題】

VB2005.NetからADO.Netを利用してSQLServerへ接続しています。
(SQLServerへの接続はSQLServer認証です)


Windowsアプリケーション内で、Sqlコネクションストリングへ
接続情報を設定後、OPENすると正常に動作します。

が、クラスライブラリ化を行おうとしたところ、
OPENメソッドでExceptionエラーとなります。

以下、Windowsアプリケーション内ソースです。
↓↓↓↓↓ここから↓↓↓↓↓

Imports System.Data.SqlClient

Public Class Form1

Private mobjConn As SqlConnection

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim strConnString As String = ""

Try

strConnString &= "Data Source = AAA;"
strConnString &= "Initial Catalog = BBB;"
strConnString &= "Intgrated Security = FALSE;"
strConnString &= "User ID = CCC;"
strConnString &= "Password = DDD;"


Me.mobjConn = New SqlConnection(strConnString)

Me.mobjConn.Open()

Catch ex As Exception
Throw ex
End Try
End Sub
End Class

↑↑↑↑↑ここまで↑↑↑↑↑


このフォームロードでやっている処理を、
クラスライブラリ上で処理させるとエラーになります。

以下、クラスライブラリ内ソースです。
↓↓↓↓↓ここから↓↓↓↓↓

Public Sub GsubOpen()

Dim strConnString As String = ""

Try

strConnString &= "Data Source = AAA;"
strConnString &= "Initial Catalog = BBB;"
strConnString &= "Intgrated Security = FALSE;"
strConnString &= "User ID = CCC;"
strConnString &= "Password = DDD;"


Me.mobjConn = New SqlConnection(strConnString)

Me.mobjConn.Open()

Catch ex As Exception
Throw ex
End Try
End Sub

↑↑↑↑↑ここまで↑↑↑↑↑

同じことをやっているつもりなのですが、
どうもうまくいきません。



Exceptionでエラー内容を確認しようとしたのですが、
Newしてコネクションストリングを設定しているときは、
ステートや、データベース名、ワークステーションID等を
参照できるのですが、Openメソッド発行後Exceptionに入った
時にNothingとなってしまいます。
従って、ex自体がNothingになっており、
エラー内容も確認できない状態です。

【解決するために何をしたか】

Windowsアプリケーションとクラスライブラリでは、
デフォルトの参照設定に相違があったので、
Windowsアプリケーションに合わせて、参照設定を追加したのですが、
それでもエラーになってしまいます。

どなたかご教授願います。
> Catch ex As Exception *1
> Throw ex *2
> End Try
> Exceptionに入った時にNothingとなってしまいます。
> 従って、ex自体がNothingになっており、
> エラー内容も確認できない状態です。

たとえばexの中身を見る場合は*2でブレークする必要があります。
*1で止めて見てませんか?

別の話ですが、例の場合、Throwは引数無しにしてください。 ※MSDN参照
■No21907に返信(まどかさんの記事)
>> Catch ex As Exception *1
>> Throw ex *2
>> End Try
>>Exceptionに入った時にNothingとなってしまいます。
>>従って、ex自体がNothingになっており、
>>エラー内容も確認できない状態です。
>
> たとえばexの中身を見る場合は*2でブレークする必要があります。
> *1で止めて見てませんか?

それが、、*1では見ていません。
*1でだめでしたので、*2に入ってクイックウォッチで見てもNothingでした。

>
> 別の話ですが、例の場合、Throwは引数無しにしてください。 ※MSDN参照
>

勉強不足ですみません。MSDN参照します。

いまだに解決できません。

そもそも、クラスライブラリでSQLServerへの接続を
行うことはできないんでしょうか?

Windowsアプリケーション内で、行うべきなのでしょうか。


すみません、VB.NET初心者でして。
難しいです。
> そもそも、クラスライブラリでSQLServerへの接続を
> 行うことはできないんでしょうか?
>
> Windowsアプリケーション内で、行うべきなのでしょうか。

問題ありません。
Formもクラスですし。
ソリューションをリビルドまたはクリーンでも同じでしょうか?

あと、検索したら
http://bbs.wankuma.com/index.cgi?mode=al2&namber=4694&KLOG=14
あったよ同じ質問が!と思ってみたら、同じこと書いてましたね。私。

別のPCで正常なら環境が変になっているかもしれません。
>
> 問題ありません。
> Formもクラスですし。
> ソリューションをリビルドまたはクリーンでも同じでしょうか?
>
> あと、検索したら
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=4694&KLOG=14
> あったよ同じ質問が!と思ってみたら、同じこと書いてましたね。私。

見事、全く同じ現象です。
SubではなくFunctionにすればExceptionエラー発生しません。

本当に不可解な現象です。

>
> 別のPCで正常なら環境が変になっているかもしれません。

現在、環境を作成中です。
同じ現象であれば、私が現在使っているマシンがおかしくなっているのかもしれませんね。


新たな環境が作成完了次第、調査してみます。

>>別のPCで正常なら環境が変になっているかもしれません。
>

新たな環境が用意できましたので、確認したところ。。

新しい環境では再現しませんでした。何でしょう?

旧環境は当方が作成したものではないのですが。
とりあえず、新しい環境にて進めてまいります。

まどかさん
ありあがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板