sql >> データベース >  >> RDS >> Oracle

結果が返されない場合のExecuteScalar()の処理

    DbCommand.ExecuteScalarのMSDNドキュメントによると:

    結果セットの最初の行の最初の列が見つからない場合は、null参照(Visual BasicではNothing)が返されます。データベースの値がnullの場合、クエリはDBNull.Valueを返します。

    次のスニペットについて考えてみます。

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

    実行時(ODP.NETでテストされていますが、どのADO.NETプロバイダーでも同じである必要があります)、次のように動作します。

    • 行が存在しない場合、command.ExecuteScalar()の結果 はnullであり、null文字列にキャストされ、getusernameに割り当てられます。 。
    • 行が存在するが、ユーザー名にNULLが含まれている場合(これはDBでも可能ですか?)、command.ExecuteScalar()の結果 DBNull.Valueです 、結果としてInvalidCastException

    いずれにせよ、NullReferenceException 可能ではないはずなので、問題はおそらく他の場所にあります。



    1. 更新クエリの最適化

    2. Oracle-SQL開発者からスクリプトを生成する方法

    3. MSSQLは非推奨になっているので、SQLSRV拡張機能をPHPで動作させるにはどうすればよいですか?

    4. SQL ServerデータベースでUTF-8照合を使用する方法は?