1

私は次のコードを持っています。ブレークポイントを使用すると、["@ myID"]。Valueが2467などの実際の値であることがわかります。ただし、tryParseの文字列としてキャストすることはできません。以下のように「asstring」を使ってみました。また、toString()も試しました。stringIDはnullのままなので、tryParseはmyID値をゼロのままにします。些細な構文の問題だと思いますが、困惑しています。2467などの実際のIDを返す必要があります。

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 に答える