[InvalidCastException:无法将'System.DBNull'类型的对象强制转换为'System.String'。]

时间:2014-01-19 12:17:04

标签: c# asp.net string session ms-access

错误行:

来源错误:

Line 37:         while (rdr.Read()==true)
Line 38:         {
Line 39:             if (TextBoxUserName.Text == (string)rdr["CUserName"]) 
Line 40:             {
Line 41:                 ClientScript.RegisterStartupScript(csType,"Error",scriptErrorUserId);

当我尝试注册帐户时会弹出。

我使用microsoft access作为数据库。

数据库 - CUserName 会话 - sUserName 并且有@eUserName

任何想法的人?

2 个答案:

答案 0 :(得分:3)

替换此

if (TextBoxUserName.Text == (string)rdr["CUserName"])

if (TextBoxUserName.Text == rdr["CUserName"].ToString())

答案 1 :(得分:1)

在将rdr["CUserName"]转换为System.DBNull.Value之前,您需要先检查string是否等于if (TextBoxUserName.Text == (string)rdr["CUserName"]) 。改变这个:

string userName = rdr["CUserName"] != System.DBNull.Value ? (string)rdr["CUserName"] : string.Empty;
if (TextBoxUserName.Text == userName)

到此:

{{1}}