日期:2014-05-18  浏览次数:21076 次

OleDbDataReader读取为空的数据字段
请教各位一个问题:就是目前我有一张表叫“db_PayType”,里面有2个字段,一个是Type(类型),一个叫Description(类型的说明),然后我的后台C#代码是:
 OleDbConnection con = new OleDbConnection(_ConString);
  try
  {
  //查询数据库中
  string cmdTxt = "SELECT [方式],[说明] FROM [方式表]";
  //执行查询命令
  OleDbCommand cmd = new OleDbCommand(cmdTxt, con);
  if (con.State == ConnectionState.Closed)
  {
  con.Open();
  }
  OleDbDataReader dr = cmd.ExecuteReader();
  List<PayTypeItem> typeLst = new List<PayTypeItem>();
  while (dr.Read())
  {
  PayTypeItem item = new PayTypeItem();
  item.PayType = dr.GetString(0);
  item.Description = dr.GetString(1);
  typeLst.Add(item);
  }
  return typeLst;
  }
  catch(Exception)
  {
  return null;
  }

很简单的代码,但是这里有一个问题,是这样的:目前我的数据库采用的Aceess2007,这张表“db_PayType”我只给【Type(类型)字段】添加了数据值,没有给【Description(类型的说明)】字段添加值,是空的!现在程序执行到我上面这段代码的item.Description = dr.GetString(1)这行时,程序会直接跳到catch里的值,(我理解是因为在数据表中这个“说明”字段)没有值,所以读不出来就直接报异常咯,(如果在数据库里插入了“说明字段”数据就不会异常);
但是我想要得结果是:不管说明数据库里有没有值,我都能成功的把PayType的值读取出来显示都前台界面,请教下各位该怎么修改这段代码啊?

------解决方案--------------------
item.Description = dr.GetString(1);
改成
item.Description = dr[1] == DBNull.Value?"":dr.GetString(1);
------解决方案--------------------
C# code

item.Description = dr["Description"] == DBNull.Value?"":dr.GetString("Description");