この質問は数か月前に聞かれたと思いますが、私の状況は違うと思います。同じルールが適用されないかもしれません。データベースエラー:位置0に行がありません
このメソッドを実行するたびに、同じエラーがポップアップします。 [0]を[1]または[15]に変更すると、位置0に行がありません。 [1]などに行がありません。これは、私のデータベースが接続さえしていないことを意味しますか?行がそこにあるかどうかを調べるために何らかのif文を書くべきですか?
public bool UpdateOrderToShipped(string order)
{
orderNumber = order;
string batch = ConfigurationManager.AppSettings["SuccessfulOrderBatch"];
string statement = "UPDATE SOP10100 SET BACHNUMB = '"+ batch +"' WHERE SOPNUMBE = @SOPNUMBE";
SqlCommand comm = new SqlCommand(statement, connectionPCI);
comm.Parameters.Add("SOPNUMBE", orderNumber);
try
{
comm.Connection.Open();
comm.ExecuteNonQuery();
comm.Connection.Close();
}
catch(Exception e)
{
comm.Connection.Close();
KaplanFTP.errorMsg = "Database error: " + e.Message;
}
statement = "SELECT SOPTYPE FROM SOP10100 WHERE SOPNUMBE = @SOPNUMBE";
comm.CommandText = statement;
SqlDataAdapter da = new SqlDataAdapter(comm);
DataTable dt = new DataTable();
da.Fill(dt);
soptype = dt.Rows[0]["SOPTYPE"].ToString(); //errror here
return true;
}
なぜあなたの方法はブールですか?それはtrueを返すだけです。 – Andre
@Andre:明白な理由の1つは、将来、catchがfalseを返して、呼び出し側が成功したかどうかを知ることです。 – Chris
@Chris、これはエラーが発生すると予想されるいくつかの方法では問題ありません。これは当てはまりません。 – Andre