İlk ASP.Net uygulamasında çalışıyorum ve çok sayıda engele çarpıyor gibi görünüyorum (arka plan öncelikli olarak WinForms'da arkamda yeni MVC5 projesi ile).OracleDataReader ile okurken NULL değerleri işlensin mi?
başarıyla OracleCommand
kullanarak DB bağlantısı oluşturmak ve benim Sorgu yürütülürken, ama satır okuduktan çalıştığımda odr.GetDecimal(1)
için ikinci satırda bir Column contains NULL value
alıyorum ediyorum. Bir OracleDataReader'dan okurken boş değerlerin nasıl ele alınacağını bilen var mı? böylece 0 ile değiştirin eğer (bir Decimal
değer bekliyor beri) NULL için basit bir kontrol düşünce ve sahada
List<YearsOfService> yearsOfService = new List<YearsOfService>();
string SQL = "SELECT SCHOOL_YEAR as YEAR, " +
"TOTAL_SERVICE_CREDIT as ServiceCredited, " +
"RETIREMENT_SALARY as Salary, " +
"SOURCE_VALUE as CoveredEmployer " +
"FROM " + Schema + ".RANDOM_ORACLE_TABLE a " +
"WHERE MEMBER_ACCOUNT_ID = :memberAccountId";
DbConnection dbc = new DbConnection();
OracleCommand cmd = dbc.GetCommand(SQL);
cmd.Parameters.Add(new OracleParameter("memberAccountId", memberAccountId));
OracleDataReader odr = cmd.ExecuteReader();
int counter = 0;
if (odr.HasRows)
{
while (odr.Read())
{
YearsOfService yos = new YearsOfService();
yos.Year = odr.GetInt16(0);
yos.ServiceCredited = odr.GetDecimal(1); // Error on Second Pass
yos.Salary = odr.GetDecimal(2);
yos.CoveredEmployer = odr.GetString(3);
yearsOfService.Add(yos);
counter++;
}
}
return yearsOfService;
}
takipçinizin çalışacak, ama hayır şans:
Aşağıda benim kodudur. Aynı hata: yos.ServiceCredited = Convert.IsDBNull(odr.GetDecimal(1)) ? 0 : odr.GetDecimal(1);
.
Tam hatadır:
türü 'System.InvalidCastException' istisna Oracle.DataAccess.dll oluştu ancak kullanıcı kodu işlenmedi
ek bilgiler: Kolon BOŞ verileri içeriyor
benim 2 satır iade edilen doğruladıaşağıdaki biçimdedir:
Year|CreditedService|Salary |CoveredEmployer
2013|0.70128 |34949.66|ER
2014|NULL | 2213.99|NULL
Herkesin en iyi şekilde nasıl ilerleyeceğine dair tavsiyesi var mı? OracleDataReader'ımı okurken NULL değerini almayı nasıl ele almalıyım?
bu özel hat üzerinde sadece merak 'yos.ServiceCredited = odr.GetDecimal (1);' nasıl adıyla alanını başvuran değildir gelip sadece değeri atamadan önce değeri kontrol etmek ..? 'Look Up Null Coalesce – MethodMan
OracleDataReader kullanmadım, ancak 'odr.GetValue (1)', odr.GetDecimal (1) 'yerine NULL olup olmadığını kontrol etmeniz gerektiğini tahmin ediyorum. – juharr
odr.GetValue (0)! = DBNull.Value için kontrol edin –