分明红色的部分是有数据的啊,我都无语了都,求大侠ing  
          SqlConnection con = new SqlConnection(SqlconString.SqlconnectionString);
            string MV000 = GridView1.DataKeys[e.RowIndex]["MV000"].ToString();
            string str = "DELETE FROM WEBYMV WHERE MV000='" + MV000 + "'";
            con.Open();
            SqlCommand cmd = new SqlCommand(str, con);
            cmd.ExecuteNonQuery();
            SqlCommand cmddelete = new SqlCommand("SELECT MV006 FROM WEBYMV WHERE MV000=30", con);
            SqlDataReader sdr=cmddelete.ExecuteReader();
            if (sdr.Read())
            {
                string MV006 = sdr["MV006"].ToString();
                File.Delete("D:\\web\\FAQDocument\\" + MV006);
                sdr.Close();
            }

            con.Close();
            GVBD(sortdv);

解决方案 »

  1.   

    sdr.Read()是bool类型吗?
    如果是的话就用if(sdr.Read())
    应该用While(sdr.Read())把?
      

  2.   

    while(sdr.Read())
                { 
                    string MV006 = sdr["MV006"].ToString(); 
                    File.Delete("D:\\web\\FAQDocument\\" + MV006); 
                    sdr.Close(); 
                } 
      

  3.   

    SELECT MV006 FROM WEBYMV WHERE MV000='30'
      

  4.   

    在查询分析器里看看 SELECT MV006 FROM WEBYMV WHERE MV000=30 有没有结果 string str = "DELETE FROM WEBYMV WHERE MV000='" + MV000 + "'";
                con.Open();
                SqlCommand cmd = new SqlCommand(str, con);
                cmd.ExecuteNonQuery();
                SqlCommand cmddelete = new SqlCommand("SELECT MV006 FROM WEBYMV WHERE MV000=30", con);
                SqlDataReader sdr=cmddelete.ExecuteReader(); 
    你的意思应该是删除数据的时候同进删除文件那"DELETE FROM WEBYMV WHERE MV000='" + MV000 + "'"; 这个应该在删除文件后面执行。像你现在这样已经删除了数据库中的记录了。
    所以if(sdr.Read())没有数据
      

  5.   

    while(sdr.Read()) 
                {  
                    string MV006 = sdr["MV006"].ToString();  
                    File.Delete("D:\\web\\FAQDocument\\" + MV006);   
                }  
    sdr.Close(); 
    这样看看 
      

  6.   

    在查询分析器里看看SELECT MV006 FROM WEBYMV WHERE MV000=30是否有结果
    你的意思是删除记录的同时要删除文件。
    但你先
    "DELETE FROM WEBYMV WHERE MV000='" + MV000 + "'"
    记录都已经删掉了,所以if(sdr.Read())是没有记录的
      

  7.   

    楼上的Very Good!
    哈哈,我也刚刚发现了这个问题,不过还是谢谢你的,谢谢!