我有以下代码。当我使用断点时,我可以看到[“@myID”]。值是一个实数值,例如2467.但是,我无法将其转换为我的tryParse的字符串。我尝试过使用“as string”,如下所示,我也尝试过toString()。我的stringID保持为null,因此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;
}
答案 0 :(得分:3)
我的猜测是演员阵容失败了。您将OUT参数声明为INT,您应该尝试将其作为int读取:
int stringID =(int) myCommand.Parameters["@myID"].Value ;
我认为您不需要尝试在下一行再次解析它。 myCommand.Parameters["@myID"].Value
应该已包含该值。
答案 1 :(得分:2)
您也可以使用“Convert.ToInt32”功能
int stringID = Convert.ToInt32(myCommand.Parameters["@myID"].Value) ;