using (SqlDataReader dr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_LOGIN_ACCOUNT, Parms))
            {
                if(dr.Read())
                    return new sm_MUserInfo(dr.GetInt32(0),dr.GetString(1),dr.GetString(2);               
                return null;
            }
===========================ExecuteReader代码=======================
 public static SqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText,params SqlParameter[] cmdParms)
        {
            SqlCommand cmd = new SqlCommand();
            SqlConnection conn = new SqlConnection(connString);            try
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
                SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
                return rdr;            }
            catch{
                conn.Close();
                return null;
            }        }==========================PrepareCommand代码=====================
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText,SqlParameter[] cmdParms) 
        {
            if (conn.State != ConnectionState.Open)
                conn.Open();            cmd.Connection = conn;
            cmd.CommandText = cmdText;            if (trans != null)
                cmd.Transaction = trans;            cmd.CommandType = cmdType;            if (cmdParms != null)
            {
                foreach (SqlParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }
        }SQLHelper.CONN_STRING_NON_DTC:我设备了数据库的连接字段
SQL_LOGIN_ACCOUNT:写成是SELECT * From UserInfo Where (UserName=@UserName) and (PassWord=@PassWord)Parms:有二个参数都给定了值为什么执行到ExecuteReader代码 中的SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);就报System.Data.SqlClient.SqlException 中第一次偶然出现的“System.Data.dll”类型的异常这个错误呢~~~!我跟踪那些参数和状态都很正常呀,请问是怎么啦

解决方案 »

  1.   

    那你不要这么写就是了SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
      

  2.   

    SqlCommand cmd = new SqlCommand();
                SqlConnection conn = new SqlConnection(connString);改成
    SqlConnection conn = new SqlConnection(connString);
        SqlCommand cmd = new SqlCommand(conn);
      

  3.   

    SqlCommand cmd = new SqlCommand();
                SqlConnection conn = new SqlConnection(connString);改成
    SqlConnection conn = new SqlConnection(connString);
        SqlCommand cmd = new SqlCommand(conn);
    更不对呀