Witam
Mam funkcję sprawdzającą czy dane ID produktu istnieje w bazie danych, jeśli tak to pobiera wartości poszczególnych pól dla danego ID i przypisuje zmiennych. Problem pojawia się gdy jedno z pól zawiera null, np dla nowo wstawionych kolumn. Zrobiłem taką funkcję w klasie nadrzędnej:
protected int conv (object data)
{
int dt = 0;
if(DBNull.Value.Equals(data))
{
dt=(int)data;
}
return dt;
}
Oraz w późniejszym czasie drugą wersję
protected int conv (object data)
{
int dt = 0;
if(!Convert.IsDBNull(data))
{
dt=(int)data;
}
return dt;
}
A następnie w funkcji pobierającej dane z bazy:
using(FbConnection conn = new FbConnection(connText))
{
conn.Open();
using(FbCommand cmd = conn.CreateCommand())
{
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "select * from MAINDATA where ID = '"+id+"'";
using(FbDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
while(reader.Read())
{
int mat = conv(reader.GetInt32(reader.GetOrdinal("MAT")));
int ln = conv(reader.GetInt32(reader.GetOrdinal("LN")));
}
}
}
I gdy pole zawiera null dostaję komunikat:
Object cannot be cast from DBNull to other types.
Pola których wartość jest różna od null wczytują się normalnie.
Długo juz spędziłem czasu nad tym problemem, niestety nie potrafię znaleŹć rozwiązania. Może ktoś rzucić okiem i pomóc ?