1

これは私のコードです:

    OdbcConnection odbcConn = new OdbcConnection("DSN=VIP_Company355");

    try
    {
        odbcConn.Open();
        int pleaseReachMe = 5;
    }
    catch (Exception ex)
    {

    }

デバッガーが到達したとき

    odbcConn.Open(); 

戻りませんし、例外もスローしません。ドキュメントによると、デフォルトのタイムアウトは15秒です。ただし、15秒が経過しても、例外はスローされません。また、接続文字列を意味のない値に置き換えると、すぐにエラーがスローされます。

何か案は?

編集:

ODBCデータソースアドミニストレータのトレースを有効にしたところ、ログファイルに次の内容が残りました。

parentProcessId 1518-2754   ENTER SQLDriverConnectW 
    HDBC                0x005BF570
    HWND                0x00000000
    WCHAR *             0x63118B34 [      -3] "******\ 0"
    SWORD                       -3 
    WCHAR *             0x63118B34 
    SWORD                       -3 
    SWORD *             0x00000000
    UWORD                        0 <SQL_DRIVER_NOPROMPT>

(簡潔にするために最後のステートメントのみが含まれています)SQLDriverConnectWプロシージャに入りましたが、存在しません。

4

3 に答える 3

1

接続文字列を次のように変更しました。

"DSN=VIP_Company355;GR_UID=userName;GR_PWD=myPass;"

GR_の変更が機能した理由がわかりません。

于 2013-01-18T12:43:39.573 に答える
0

クラスの最下層で使用する変数をいくつか作成してみてください。

つまり、string connString = "DSN=VIP_Company355"

OdbcConnection conn = new OdbcConnection(connString);

次に、以下を使用します。conn.Open();

すなわち

public void SomeFunction()
{    
    string connString = "DSN=VIP_Company355";

    if (OpenConnection(connString))
    {
        MessageBox.Show("Connection Established");
    }
}

public bool OpenConnection(string connString);
{
    try 
    {            
        OdbcConnection conn = new OdbcConnection(connString);

        conn.Open();

        return true;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message());

        return false;
    }
}

編集:

文法など。これらの変数をクラスの最上位に作成することについてのメモ。必須ではありませんが、接続文字列またはOdbcConnectionを再利用していることがわかった場合は、それらの定数を作成する価値があるかもしれませんが、それはすべてあなた次第です。

于 2013-01-17T14:25:23.590 に答える
-1
int pleaseReachMe = 5; 

は使用法のないローカル変数であるため、デバッガーブレークポイントはそれにヒットしません。おそらく、その行はコンパイラーによって削除されるためです。

Visual Studio Debuggerは、未使用の変数宣言にステップインしません

于 2013-01-17T13:47:27.277 に答える