2011-08-08 10 views
3

私はASP.NET(c#)を使用してOracleストアドプロシージャに渡している別のテキストボックスを持つアプリケーションを開発しています。各テキストボックスには、クラスファイルにプロパティがあります。空のテキストボックスを渡すと、エラーが発生します。これは、oracleのvarchar2フィールドが "null"を受け入れていないためです。空のテキストボックスデータを、.NETを使用してoracleのストアドプロシージャにパラメータとして渡す方法

 Private string _fristName; 

     public string FirstName 
     { 
      get { return _fristName; } 
      set { _fristName= value; } 
     } 

_fristNameをstring.emptyまたは ""にするのがベストプラクティスですか?

+0

'' ''ではなく 'string.Empty'を使用する方が良いでしょう。 .Net 2.0の後は、まったく同じです。しかし、読みやすさに関する限り、ほとんどのプログラマは 'string.Empty'が読みやすくなることに同意するでしょう。 –

答えて

5

クラスの初期化では、プライベート変数をデフォルト値のString.Emptyに設定するだけです。

Private string _fristName = String.Empty; 

取得すると、nullではなく空の文字列が返されます。それを設定すると、値は何にでも変更されます。

また、これを行うことができます。このことができます

Private string _fristName; 

    public string FirstName 
    { 
     get { return _fristName ?? String.Empty; } 
     set { _fristName= value; } 
    } 

希望を!

EDIT:@Marcからのコメントをコメントに入れました。比較を変更して??演算子を使用しました。ありがとう@Marc!

+0

それ以上の意味では、 'get {return _firstName ?? ""; } ' – Marc

+0

うん、ええ、私はいつも' ?? 'を忘れています。ありがとう! –

0

ストアドプロシージャのパラメータの値を設定する前に、nullをチェックしてください。これは共通の機能に置くことができます。これはSQL Server用であることに注意してください。ただし、Oracleには同様の機能があります。また、列がNULLを取ることができない場合は、DBNull.Valueではなく、デフォルトが使用されている可能性があります(文字列などの場合はString.Empty)。

IDbDataParameter parameter = new SqlParameter(ParameterName, DatabaseFieldType); 

parameter.Value = (value== null ? DBNull.Value : value); 
関連する問題