1

問題は、私がこのコードを持っていることです

var ojv = xmd.ExecuteScalar().ToString();
        if (ojv != null)
        {
            Console.WriteLine(ojv);
            var up = CreateQuery();
            up.CommandText = "UPDATE characters SET items=@items WHERE accId=@accId AND charId=@charId;";
            up.Parameters.AddWithValue("@items", ojv);
            up.Parameters.AddWithValue("@accId", acc.AccountId);
            up.Parameters.AddWithValue("@charId", charId);
            up.ExecuteNonQuery();
            var del = CreateQuery();
            del.CommandText = "DELETE FROM shop WHERE accId=@accId AND chrId=@chrId;";
            del.Parameters.AddWithValue("@accId", acc.AccountId);
            del.Parameters.AddWithValue("@chrId", charId);
            del.ExecuteNonQuery();
        }

しかし、null を返す ovj がない場合、それを避ける必要があります。値が見つからない場合、ExecuteScalar が null を返さないようにする方法はありますか?

4

2 に答える 2

2

ToString() を呼び出す前に null を確認してください。

    var result = xmd.ExecuteScalar();
        if (result != null)
        {
            var ojv = result.ToString();
            Console.WriteLine(ojv);
            var up = CreateQuery();
            up.CommandText = "UPDATE characters SET items=@items WHERE accId=@accId AND charId=@charId;";
            up.Parameters.AddWithValue("@items", ojv);
            up.Parameters.AddWithValue("@accId", acc.AccountId);
            up.Parameters.AddWithValue("@charId", charId);
            up.ExecuteNonQuery();
            var del = CreateQuery();
            del.CommandText = "DELETE FROM shop WHERE accId=@accId AND chrId=@chrId;";
            del.Parameters.AddWithValue("@accId", acc.AccountId);
            del.Parameters.AddWithValue("@chrId", charId);
            del.ExecuteNonQuery();
        }
于 2013-07-24T20:14:29.370 に答える