2011-10-26 18 views
1

我有以下代碼。當我使用斷點時,我可以看到[「@myID」]。值是一個真正的值,例如2467.但是,我無法將它作爲我的tryParse的字符串進行轉換。我已經嘗試使用「as string」like,並且我也嘗試過toString()。我的stringID保持爲空,所以tryParse將myID值保留爲零。我相信這是一個簡單的語法問題,但我很難過。我需要返回一個真實的ID如2467等爲什麼這個SQL輸出參數不能很好地播放?

public static int myMethod(string name) 
{ 
    Database myDB = DatabaseFactory.CreateDatabase("myDatabase"); 
    DbCommand myCommand = myDB.GetStoredProcCommand("myStoredProc"); 

    myDB.AddInParameter(myCommand, "@Name", DbType.String, name); 
    myDB.AddOutParameter(myCommand, "@myID", DbType.Int32, 4); 

    int myID = 0; 

    int test = myDB.ExecuteNonQuery(myCommand); 
    string stringID = myCommand.Parameters["@myID"].Value as string; 
    bool canParse = int.TryParse(stringID, out myID); 
    return myID; 
} 
+0

確保您已設置了存儲過程本身的輸出參數值。 – Tariqulazam

回答

3

我的猜測是演員失敗。您在聲明OUT PARAM爲INT,你應該嘗試讀回爲INT以及:

int stringID =(int) myCommand.Parameters["@myID"].Value ; 

而且我不認爲你需要嘗試在下一行再次解析它。 myCommand.Parameters["@myID"].Value應該已經包含該值。

+0

你是對的;大多。我不得不用一個明確的演員表演。我不能使用「作爲int」。 – WEFX

+0

@WEFX糾正了我的答案。我希望這應該起作用;) – Icarus

2

您也可以使用「Convert.ToInt32」功能

int stringID = Convert.ToInt32(myCommand.Parameters["@myID"].Value) ; 
相關問題