executescalar()的问题
问题:若按ClNo字段查询到相应记录ClType字段(代表权限)没有赋值,则提示(string)若要将数值强制转换为字符串型,则至少是小于无限大的数。可是我的ClType定义的是varchar(2)。
当查询出的ClType为"0"或"1"时程序完全正常。
请帮我分析分析什么原因。搜了一些,好像是没赋值的字段都是DBNull。但我不知道怎么用它判断啊。  
protected void Page_Load(object sender, EventArgs e)
     {
         string dt = DateTime.Now.ToString();
         lbDate.Text = "当前日期:" + dt;
         HttpCookie cn = Request.Cookies["clno"];
         if (cn != null)
         {
             string cltype;             
             lbName.Text = cn.Values["ClNo"] + "你好!";
             //show the view reference to the cltype            
             SqlConnection con = new SqlConnection("Data Source=XY;Initial Catalog=ProManDB;Integrated Security=True");
             string sql = "SELECT ClType FROM [Clerk] WHERE ClNo='{0}'";
             sql = string.Format(sql,cn.Values["ClNo"]);
             SqlCommand cmd=new SqlCommand(sql,con);
             con.Open();             
             try
             {
                 cltype = (string)cmd.ExecuteScalar();
             }             
             finally
             {
                 con.Close();
             }             
             if (cltype != null)
             {
                 if (cltype == "0")
                     lbName.Text += "您是管理员,可以对所有数据进行管理,操作请慎重!";
                 else
                 {
                     if (cltype == "1")
                         Menu1.Items[0].Enabled = false;
                     else
                         if (cltype == "2")
                         {
                             Menu1.Items[0].Enabled = false;
                             Menu1.Items[1].Enabled = false;
                         }
                 }
             }
             else
             {
                 lbName.Text+= "暂无权限!";
             }
         }
         else
         {
             lbName.Text = "nobody is login";
             //nothing is showing
             Menu1.Enabled = false;
             Menu1.Visible = false;
             GVCustomer.Enabled = false;
             GVCustomer.Visible = false;
         }
     }
------解决方案--------------------用Convert.ToString()试试刊,另外,你出问题的时候,直接执行SELECT ClType FROM [Clerk] WHERE ClNo=xxx 显示出来的是什么呢?