2017-02-03 2 views
1

上のゼロの代わりにヌルを返すようにシート名としてExcelファイルに関する情報を格納することFlatFileSettingと呼ばれ、コラムなどをカウントオブジェクトのプロパティは、私はデータベースのテーブルを持っているWebフォーム

ユーザーが使用して、このテーブル内のデータの個々の行を編集することができます.NET Webアプリケーションのフォーム。フォームは、FlatFileSetting objectから値を取得することによって設定されます。

これは正常に動作し、テキストボックスにはデータがある場合に予想どおりにデータが格納されますが、データベースに整数フィールドのNULL値が含まれていると、関連するテキストボックスには空白ではなく0が表示されます。オブジェクト

public class FlatFileSetting 
{ 
    public int ColumnCount { get; set; } 
    public string SheetName { get; set; } 

    public void GetRecord(int FlatFileSettingId) 
    { 
     string myConnectionString = "Foo"; 
     var myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[myConnectionString].ConnectionString); 

     SqlCommand myCommand = myConnection.CreateCommand(); 
     myCommand.CommandType = CommandType.StoredProcedure; 
     myCommand.CommandText = "[dbo].[getFlatFileSetting]"; 

     myCommand.Parameters.AddWithValue("@FlatFileSettingId", FlatFileSettingId); 

     using (myConnection) 
     using (myCommand) 
     { 
      if (myReader["ColumnCount"] != DBNull.Value) 
      { 
       this.ColumnCount = Int32.Parse(myReader["ColumnCount"].ToString()); 
      } 

      if (myReader["SheetName"] != DBNull.Value) 
      { 
       this.SheetName = myReader["SheetName"].ToString(); 
      } 
     } 
    } 
} 

をFlatFileSetting

私は理由が!= DBNull.Valueをどうするだろう知っているが、私はそれが含まれていない場合、私はInput String Not in the Correct formatエラーを取得します。

私はオブジェクトプロパティのデータ型をすべて文字列に変更することでこれを解決できることも知っていますが、同じデータ型として保持する必要があります。

すべてのヘルプは大

答えて

4

この値はnullになることはありません:非NULL可能である

public int ColumnCount { get; set; } 

intので。したがって、何も設定していない場合でも、0のデフォルトはdefault(int)になります。

public Nullable<int> ColumnCount { get; set; } 
:あなたは長い構文を好む場合は、

public int? ColumnCount { get; set; } 

をまたは:

これは、しかし、nullすることができ

0

私の最高の推測では、それはデフォルトでは0であるので、あなたは整数としてのColumnCountを宣言したことであるが認識されます。それをintにしてみてください。 (またはヌル入力可能なint)、デフォルト値はnullです。

0

this.ColumnCountintと宣言されている場合、デフォルトではゼロになり、null割り当ては許可されません。 あなたがNULL可能int型(int?)として定義する必要があります浮き袋ヌルにしたいなら、あなたはこれを行うことができます。

this.ColumnCount = myReader["ColumnCount"] as int?; 

そして、それが整数でない場合、それはnullになります(あなたのデータ列であると仮定すると整数型として定義されています)。

関連する問題