The thing is I have this code

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();
        }

But if theres no ovj it return null, I need to avoid that, is there any way so the ExecuteScalar wont return null if no value is found?

有帮助吗?

解决方案

Just check for null before you call ToString().

    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();
        }

其他提示

ExecuteScalar returns a number or null if no result set so you first need to check for null (before applying ToString()) and then parse into an integer (or big integer, or decimal whatever you need) and check for greater than zero.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top