Menurut dokumentasi MSDN untuk DbCommand.ExecuteScalar:
Jika kolom pertama dari baris pertama dalam kumpulan hasil tidak ditemukan, referensi batal (Tidak ada dalam Visual Basic) dikembalikan. Jika nilai dalam database adalah null, kueri mengembalikan DBNull.Value.
Perhatikan cuplikan berikut:
using (var conn = new OracleConnection(...)) {
conn.Open();
var command = conn.CreateCommand();
command.CommandText = "select username from usermst where userid=2";
string getusername = (string)command.ExecuteScalar();
}
Saat run-time (diuji di bawah ODP.NET tetapi harus sama di bawah penyedia ADO.NET mana pun), ia berperilaku seperti ini:
- Jika baris tidak ada, hasil dari
command.ExecuteScalar()
adalah null, yang kemudian dicor ke string null dan ditetapkan kegetusername
. - Jika baris ada, tetapi memiliki NULL di nama pengguna (apakah ini mungkin di DB Anda?), hasil dari
command.ExecuteScalar()
adalahDBNull.Value
, menghasilkanInvalidCastException
.
Bagaimanapun, NullReferenceException
seharusnya tidak mungkin, jadi masalah Anda mungkin terletak di tempat lain.