1

我有以下代码。当我使用断点时,我可以看到 ["@myID"].Value 是一个真实值,例如 2467。但是,我无法将其转换为我的 tryParse 的字符串。我尝试过使用下面的“as string”,也尝试过 toString()。我的 stringID 保持为空,因此 tryParse 将 myID 值保留为零。我确定这是一个微不足道的语法问题,但我很难过。我需要返回一个真实的ID,例如2467等。

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;
}
4

2 回答 2

3

我的猜测是演员阵容失败了。您将 OUT 参数声明为 INT,您也应该尝试将其读回为 int:

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

而且我认为您不需要尝试在下一行再次解析它。myCommand.Parameters["@myID"].Value应该已经包含该值。

于 2011-10-26T00:38:41.537 回答
2

您也可以使用“Convert.ToInt32”功能

int stringID = Convert.ToInt32(myCommand.Parameters["@myID"].Value) ;
于 2011-10-26T02:27:27.010 回答