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");