如果某些字段中存在空值,如何获取数据集

时间:2014-04-22 04:46:46

标签: c# .net dataset

DataSet ds = ast.GetUserLoginInfo(Param);

foreach (DataRow dr in ds.Tables[0].Rows)
{
    if (ds.Tables.Count > 0)
    {
        if (ds.Tables[0].Rows.Count > 0)
        {
            _userstate.ID = Convert.ToInt32(ds.Tables[0].Rows[0]["ID"]);
            _userstate.Name = Convert.ToString(ds.Tables[0].Rows[0]["Name"]).Trim();
            _userstate.Email = Convert.ToString(ds.Tables[0].Rows[0]["Email"]).Trim();
            _userstate.Username = Convert.ToString(ds.Tables[0].Rows[0]["Username"]).Trim();              
            _userstate.GroupId = Convert.ToInt32(ds.Tables[0].Rows[0]["GroupId"]);
            _userstate.BranchId = Convert.ToInt32(ds.Tables[0].Rows[0]["BranchId"]);
            _userstate.BranchId = Convert.ToInt32(ds.Tables[0].Rows[0]["DeptId"]);
            _userstate.RoleId = Convert.ToInt32(ds.Tables[0].Rows[0]["RoleId"]);
            _userstate.IsActive = Convert.ToBoolean(ds.Tables[0].Rows[0]["IsActive"]);

            _siteuser.UserStat = _userstate;
        }

对于某些用户,BranchId为null,因为它们是头部,所有分支都在它们之下。因此,当用户登录时,数据库会返回数据集中的非内容。

2 个答案:

答案 0 :(得分:0)

将此代码用于所有字段

 _userstate.ID = Convert.ToInt32(ds.Tables[0].Rows[0]["ID"] == null ? 0 : ds.Tables[0].Rows[0]["ID"]);
 _userstate.Name = Convert.ToString(ds.Tables[0].Rows[0]["Name"] == null ? "" ds.Tables[0].Rows[0]["Name"] ).Trim();

答案 1 :(得分:0)

由于branchId可以为空,因此ConvertToInt32会抛出异常。试试这个。

int.TryParse(ds.Tables[0].Rows[0]["BranchId",  _userstate.BranchId)