クラス「Checkout」に、SQLステートメントを実行してレコードをテーブルに挿入し、scope_identityを選択して、そのレコードのIDを取得する関数があります。IDをintとして返し、Webページの変数に割り当てます。
int OrderID = Checkout.WriteOrder_tblOrders(CustID);
関数は次のとおりです。
public static int WriteOrder_tblOrders(int CustID)
{
// OrderID is initially 0, then changed when scope_identity is called in the sql statement.
int OrderID = 0;
DateTime OrderDate = DateTime.Now;
string sql = "INSERT INTO tblOrders (OrderDate, CustID) VALUES (@OrderDate, @CustID); SELECT scope_identity();";
using (SqlConnection myConnection = new SqlConnection(connectString))
{
using (SqlCommand cmd = new SqlCommand(sql, myConnection))
{
cmd.Parameters.AddWithValue("@CustID", CustID);
cmd.Parameters.AddWithValue("@OrderDate", OrderDate);
myConnection.Open();
OrderID = (int)cmd.ExecuteScalar();
myConnection.Close();
}
}
return OrderID;
}
デバッガーは、関数に問題がないことを示しており、新しいレコードがそのテーブルに正しく表示されていますが、
「無効なキャスト」
OrderIDを割り当てる最初の行のエラー。私はこれを試しました:
int OrderID = (int)Checkout.WriteOrder_tblOrders(CustID);
intとInt32の両方で、Convert.ToInt32を使用してみましたが、どちらも機能しませんでした。私はここで何が間違っているのですか?