IDataReader and Null values
-
Hi, I am using an IDataReader with SQL and ASP.Net. I keep getting an IndexOutOfRangeException because in one of the columns there is only a value for some of the rows (ex. if the size is over 0.5 there is a value, but if it is 0.5 or under that column is blank). How can I do this? So far I have:
public static List GetAllNames(){
SqlDatabase db = DatabaseFactory.CreateDatabase() as SqlDatabase;
DbCommand cmd = db.GetStoredProcedureCommand("dbo.GetAllNames");List namelist= new List();
using (IDataReader reader = db.ExecuteReader(cmd))
{
while(reader.Read())
{
namelist.Add(GetNameFromReader(reader));
}
}
return namelist;
}private static Name GetNameFromReader(IDataReader reader)
{
Name name_obj = new Name(
(int)reader["ID"],
((reader)["size"] !=DBNull.Value)? (int)reader["size"] : (int)0));
return name_obj;
}Thanks so much for your help!
-
Hi, I am using an IDataReader with SQL and ASP.Net. I keep getting an IndexOutOfRangeException because in one of the columns there is only a value for some of the rows (ex. if the size is over 0.5 there is a value, but if it is 0.5 or under that column is blank). How can I do this? So far I have:
public static List GetAllNames(){
SqlDatabase db = DatabaseFactory.CreateDatabase() as SqlDatabase;
DbCommand cmd = db.GetStoredProcedureCommand("dbo.GetAllNames");List namelist= new List();
using (IDataReader reader = db.ExecuteReader(cmd))
{
while(reader.Read())
{
namelist.Add(GetNameFromReader(reader));
}
}
return namelist;
}private static Name GetNameFromReader(IDataReader reader)
{
Name name_obj = new Name(
(int)reader["ID"],
((reader)["size"] !=DBNull.Value)? (int)reader["size"] : (int)0));
return name_obj;
}Thanks so much for your help!
The code looks OK. I don't see why you'd get IndexOutOfRangeException for some rows but not others.
-
Hi, I am using an IDataReader with SQL and ASP.Net. I keep getting an IndexOutOfRangeException because in one of the columns there is only a value for some of the rows (ex. if the size is over 0.5 there is a value, but if it is 0.5 or under that column is blank). How can I do this? So far I have:
public static List GetAllNames(){
SqlDatabase db = DatabaseFactory.CreateDatabase() as SqlDatabase;
DbCommand cmd = db.GetStoredProcedureCommand("dbo.GetAllNames");List namelist= new List();
using (IDataReader reader = db.ExecuteReader(cmd))
{
while(reader.Read())
{
namelist.Add(GetNameFromReader(reader));
}
}
return namelist;
}private static Name GetNameFromReader(IDataReader reader)
{
Name name_obj = new Name(
(int)reader["ID"],
((reader)["size"] !=DBNull.Value)? (int)reader["size"] : (int)0));
return name_obj;
}Thanks so much for your help!
Terick wrote:
(reader)["size"]
I am not getting this? By the way try this:
private static Name GetNameFromReader(IDataReader reader)
{
Name name_obj = new Name(
(int)reader["ID"],
(reader["size"] != DBNull.Value)? (int)reader["size"] : (int)0);return name\_obj; }
Be careful, there is no Undo Button(Ctrl+Z) in life.
-
Terick wrote:
(reader)["size"]
I am not getting this? By the way try this:
private static Name GetNameFromReader(IDataReader reader)
{
Name name_obj = new Name(
(int)reader["ID"],
(reader["size"] != DBNull.Value)? (int)reader["size"] : (int)0);return name\_obj; }
Be careful, there is no Undo Button(Ctrl+Z) in life.
-
Terick wrote:
otherwise the cell will be empty
Hmm.... Now i get it.
string.IsNullOrEmpty(reader["size"]) ? 0 : (int)reader["size"]