public static int GetIn( string Uid, string Pwd )
{
OleDbConnection con = new OleDbConnection(
"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=saa;Initial Catalog=test;Data Source=A"); 
string sql ="select privilage as num from pri whre id=? and ps=?"; 
OleDbCommand com = new OleDbCommand( sql, con );
com.Parameters.Add( "?", SqlDbType.NVarChar ).Value = Uid;
com.Parameters.Add( "?", SqlDbType.NVarChar ).Value = Pwd; 
int level = -10;
con.Open();
level = Convert.ToInt32(com.ExecuteScalar());
con.Close(); 
switch( level )
{
case 0: return 0;  //非法用户
case 1: return 1;  //合法学生
case 10: return 10; //管理员 

return 0; 
}
level = Convert.ToInt32(com.ExecuteScalar()); 执行到这行发生ledbexception请问怎么回事?  谢谢

解决方案 »

  1.   

    返回的值为空?sql server的话
    最好用sql的库类吧
      

  2.   

    level = Convert.ToInt32(com.ExecuteScalar());
    object obj = com.ExecuteScalar();
    if (obj is int)
    {
        level = (int)obj);
    }
    else if (obj is string)
    {
       int.TryParse(obj.ToString(), out level);
    }
    else
    {
        ....
    }
      

  3.   

    把level = Convert.ToInt32(com.ExecuteScalar());
    改成如下的写法:object obj = com.ExecuteScalar();
    if (obj is int)
    {
        level = (int)obj);
    }
    else if (obj is string)
    {
       int.TryParse(obj.ToString(), out level);
    }
    else
    {
        ....
    }
      

  4.   

    hbxtlhx(平民百姓-自已动手,丰衣足食) Convert.ToInt32(com.ExecuteScalar());
    我这里就报异常了
      

  5.   

    未处理的“System.Data.OleDb.OleDbException”类型的异常出现在 system.data.dll 中
      

  6.   

    OleDbDataReader dr=com.ExecuteReader();
    if(dr.Read())
    {
       dr.isDBNull(0)
       {
          level=0
        }else
        {
          level=dr.GetInt(0);
         }
    }else
    {
      level=0;
    }