0

データをクエリしています。データが存在しない場合は挿入します。もしそうなら、私は何か他のことをします:

SqlCommand checkHead = new SqlCommand("SELECT * FROM TABLE WHERE ORDER_NO = '" + orderNo + "';", connection);
SqlDataReader checkHeadReader = checkHead.ExecuteReader(CommandBehavior.SingleRow);

if (!checkHeadReader.HasRows)
{
    checkHeadReader.Close();
    addHead.ExecuteNonQuery();
}

しかし、これをコーディングするより短い方法があるのだろうか?以下のコードは機能しますか?

SqlCommand checkHead = new SqlCommand("SELECT * FROM TABLE WHERE ORDER_NO = ' + orderNo + "';", connection);

if(checkHead.ExecuteReader(CommandBehavior.SingleRow).HasRows)
    addHead.ExecuteNonQuery();
else //this order already exists
    Server.Transfer(@"~/Views/Error.aspx");
4

1 に答える 1

3

ExecuteScalar はこれに最適です。

using (SqlCommand cmdCheck = new SqlCommand("Select Count(*) From Table Where Order_No = '" + orderNo + "'", connection))
{
    int nExists = (int)cmdCheck.ExecuteScalar();
    if (nExists==0) addHead.ExecuteNonQuery();
}
于 2012-12-11T15:37:44.760 に答える