理论上来说,异常不会是SqlCommand sqc = new SqlCommand(sql, scn);这句抛出来的
我没有打开任何数据库,然后代码中随意写了SqlCommand com = new SqlCommand("", new SqlConnection());这样一句,执行的时候也没有抛异常
估计异常是i = (int)sqc.ExecuteScalar();这句抛出来的
ExecuteScalar()方法的返回值是一个object类型,它的返回值未必可以强转为int型,所以你可以先用object obj = sqc.ExecuteScalar();看一下返回值到底是什么,若返回的不是int型的值,这样转肯定有问题的