2014-01-19 118 views
1

误差线:[InvalidCastException的:无法转换类型 'System.DBNull' 的目的为类型 'System.String']

源错误:

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

任何想法的家伙?

回答

3

替换此

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

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

在将其转换为string之前,您需要先检查rdr["CUserName"]是否等于System.DBNull.Value。更改此:

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

这样:

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

此致意义,但其他人的答案解决它。我没有尝试过你的,因为我认为它不需要!= system.dbnull.value呃? –

+1

对于字符串数据类型,您可能不需要检查'!= System.DBNull.Value',但您需要将其用于其他数据类型,即decimal或integer。 – ekad

+0

啊对了,谢谢你的信息:) –

相关问题