2013-01-17 53 views
1

這是我的代碼:爲什麼我不打電話給OdbcConnection.Open()返回?

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程序,但它永遠不會存在它。

+0

你是什麼意思,它不返回?它僅僅停留在這種方法中嗎? Main()方法中的'OdbcConn'? – plast1K

+0

是的,它只是在Open方法中。不,它不在主要方法中,它是一個類中的方法,並且我正在對該方法運行單元測試。 – Cloud9999Strife

+0

什麼'Console.WriteLine(odbcConn.ConnectionTimeout);'返回? –

回答

1

我改變了連接字符串如下:

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

我不知道爲什麼GR_修改工作。

-1
int pleaseReachMe = 5; 

是沒有使用局部變量,因此調試器斷點不會打的,大概becoz該行會被編譯器移除。

Visual Studio Debugger doesnt step into unused variable declarations

+0

我更改了代碼,以便使用pleaseReachMe,並在此之後添加了其他隨機計算,但仍然沒有任何結果。 – Cloud9999Strife

+0

你可以用你的隨機計算來編輯問題 –

+0

調試器仍然應該選擇那一行,因爲它正在做某件事,即使它只是將一個變量賦值給一個值。 – plast1K

0

試着做一對夫婦在變量類的最低層使用。

即,使01​​

一個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,那麼值得使用它們的常量,但這完全取決於你。

相關問題