当前位置:编程学习 > C#/ASP.NET >>

无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。

 string content = (string)title;

无法将类型为“System.DBNull”的对象强制转换为类型“System.String"  ?? --------------------编程问答-------------------- title的值是数据库取得吗?可能是NULL值吧? --------------------编程问答-------------------- title为NULL了 --------------------编程问答-------------------- 不能对null进行强制转换 --------------------编程问答-------------------- 判断后再操作 --------------------编程问答-------------------- null值不可以进行转换的。
空串好想也不可以 --------------------编程问答-------------------- title.ToString() --------------------编程问答-------------------- string content = title as string;  --------------------编程问答-------------------- 先判断下是否为null
 然后title.ToString() --------------------编程问答-------------------- 看下,是不是title为空值了,要控制空值的产生 --------------------编程问答-------------------- 唉,最简单的,用Convert,就不会出问题了。
string content = Convert.ToString(title);
--------------------编程问答--------------------

        string content = string.Empty;
        if (title != System.DBNull.Value)
        { 
             content =title.ToString();
        }
--------------------编程问答--------------------  string content = title is System.DBNull ? "" : title.ToString() ;

这样行吗?

这个title不知道是不是强类型数据集里的属性,如果是,那么如果它为DBNull,你在取这个title名字时就会发生这个异常。
这时修改需要用索引器来判断一下它是否为DBNull --------------------编程问答--------------------  using (SqlDataReader sdr = cmd.ExecuteReader())
                    {................
                        sdr.IsDBNull(5) ? string.Empty : sdr.GetString(5); --------------------编程问答-------------------- 顶12楼的


string content = title is DBNull ? string.Empty : title.ToString();
--------------------编程问答-------------------- 这个问题我遇到过。数据库里的字段为空 就报这个错。往那个字段里面塞点东西好了 --------------------编程问答-------------------- 楼上各位,Convert.ToString足以解决一切问题,
还要象你们这样判断这么多?真是服了你们。 
 
 
 Convert.ToString
Convert.ToString
Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 Convert.ToString
 
 
 
 
 
 
 

 
 
  --------------------编程问答-------------------- 顶10楼
   快速 --------------------编程问答--------------------  public ModelCRM.kehu GetBackInfo(string name, string pwd)
        {
            using (SqlConnection connMember = new SqlConnection(DBhelper.DBHelperShare.ConnectionString))
            {
                connMember.Open();
                SqlCommand cmd = new SqlCommand("select username,pwd,dept,realname,sort,province from users where username=@Username and pwd =@APassword", connMember);
                cmd.Parameters.Add("@Username", SqlDbType.VarChar, 20).Value = name;
                cmd.Parameters.Add("@APassword", SqlDbType.VarChar, 20).Value = pwd;
                SqlDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                ModelCRM.kehu  khe = null;
                if (dr.Read())
                {
              
                    khe = new  ModelCRM.kehu();
                    khe.Username = dr.IsDBNull(0) ? string.Empty : dr.GetString(0);
                    khe.Psw = dr.IsDBNull(1) ? string.Empty : dr.GetString(1);
                    khe.Realname = dr.IsDBNull(2) ? string.Empty : dr.GetString(2);
                    khe.Dept = dr.IsDBNull(3) ? string.Empty : dr.GetString(3);//(string)dr["dept"];
                    khe.Sort =(int) dr["sort"];
                    khe.Province = dr.IsDBNull(5) ? string.Empty : dr.GetString(5);
                  return khe;
                }else
                {
                
                dr.Close();
                return null;
                }
                
            }
        }
希望对你有帮助 --------------------编程问答-------------------- if(title!=null)
   string content = (string)title;  --------------------编程问答-------------------- string content =title==null?"":(string)title; --------------------编程问答-------------------- 10楼正解 --------------------编程问答-------------------- 唉  我也有这个问题 没有解决啊  --------------------编程问答-------------------- 很好很强大
string 维修情况 =Convert.ToString( datareader["维修情况"]);
decimal 维修应收金额 =Convert.ToDecimal ( datareader["维修应收金额"]);
当字段时值为空时,也能正常转换!
而直接使用
string 维修情况=(string)datareader["维修情况"];
进行转换时,如果字段内值为空,就会提示无法将类型为“System.DBNull”的对象强制转换为类型“System.String"

谢谢楼主,学到了! --------------------编程问答-------------------- 居然无编辑自己发的贴子也,谢谢楼主的问题,谢谢10楼的答案! --------------------编程问答-------------------- 我来接分 --------------------编程问答-------------------- 呃,其实提示的已经很清楚了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,