Как я могу определить, является ли значение из базы данных нулевым или нет в .Net 2.0? - PullRequest
1 голос
/ 20 июня 2011

Я получаю данные из базы данных и заполняю их в объекте домена. Допустим,

    public class A
    {
        int? ai;

        public int? AI
        {
            get { value = ai;}
            Set { ai = value; }

        }

    }

, поэтому я создаю объект домена в главном классе.

    class TestClass
    {
        static void Main(string[] args)
        {
            class A objData = new A();
    // here some logic for creating connection to the database and calling the datareader to fetch the //data.
        int temp =(int) objDataReader["aiDAta"];
        objData.ai = temp == null? 0: temp;
        func(objData);

     }
    }

public void func(A objData)
{

// Here i want to display the value of  objData.ai only if its database value is not null.since i was   //already assigned 0,if the value from the database is null...how can i able to identify whether the value  //from the database is null or not? also,In database "aiDAta" will have the value range from 0 - 99.
}

}

Здесь я хочу отобразить значение objData.ai, только если его значение в базе данных не равно нулю. Поскольку мне уже присвоено 0, если значение из базы данных равно нулю ... как я могуопределить, является ли значение из базы данных нулевым или нет?Также, в базе данных «aiDAta» будет иметь значение в диапазоне от 0 до 99.

Ответы [ 4 ]

2 голосов
/ 20 июня 2011

Сравните objData.ai с

DBNull.value

вместо NULL

или

проверка

IsDBNull(objData.ai)

или

public Int32 TryCastInteger32(object value)
{
    if (value != null && !Information.IsDBNull(value)) {
        Int32 retVal = default(Int32);
        if (Int32.TryParse(value.ToString(), out retVal)) {
            return retVal;
        }
    }
    return 0;
}
1 голос
/ 20 июня 2011

Если ваше приведение к Nullable проверило свойство HasValue.Это будет верно только в том случае, если тип значения не равен нулю.

0 голосов
/ 20 июня 2011

в качестве альтернативы, вы также можете просто позволить базе данных проверить, если значение равно нулю или нет, создав функцию оракула и передав значение, которое вы хотите, чтобы оно оценивалось:

CREATE OR REPLACE
  FUNCTION isNull(
      i_value IN VARCHAR2)
    RETURN NUMBER
  IS
  BEGIN
    IF i_value IS NOT NULL THEN
      RETURN 1;
    ELSE
      RETURN 0;
    END IF;
  END;
  /
0 голосов
/ 20 июня 2011

Обычно пустые поля БД возвращаются как System.DbNull, и в этом случае следующее приведение не будет выполнено:

int temp =(int) objDataReader["aiDAta"]; 

Вы можете использовать метод DBDataReader IsNull , чтобы проверить нулевое значение перед его использованием

...