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 显示出来的是什么呢?