0

ディレクトリ内のすべてのファイルを削除する必要があります (フルサイズの画像を保持しているが使用していないギャラリー スクリプトが原因です!)。

クエリを DataTable にダンプし、レコードをループするコードを少し書きました。ただし、すべてのファイルを検索して削除するためのループを導入すると、最初の SiteID に対してのみ実行されるようです。スキャンするディレクトリは少なくとも 350 個必要ですが、最初の SiteID (この SiteID 内のすべてのモジュール) のみが実行されます。

私が困惑しているので、どんなアイデアでも!

private void frmMain_Load(object sender, EventArgs e)
{
    SqlConnection con = null;
    try
    {
        // Open connection to the database
        string ConnectionString = "server=(local);UID=x;PWD=y;database=mojoportal2";
        con = new SqlConnection(ConnectionString);
        con.Open();

        SqlDataAdapter da = new SqlDataAdapter();
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();

        da.SelectCommand = new SqlCommand(@"SELECT SiteID, ModuleID FROM mp_Modules where ModuleDefID = 16 ORDER By SiteID DESC", con);
        da.Fill(ds, "Sites");
        dt = ds.Tables["Sites"];

        foreach (DataRow dr in dt.Rows)
        {
            string SiteID = dr["SiteID"].ToString();
            string ModuleID = dr["ModuleID"].ToString();
            string directoryPath = @"E:\Website\" + SiteID + @"\media\GalleryImages\" + ModuleID + @"\FullSizeImages";

            MessageBox.Show("Deleting Files In " + directoryPath);

            string[] files = Directory.GetFiles(directoryPath);
            string[] dirs = Directory.GetDirectories(directoryPath);

            foreach (string file in files)
            {
                MessageBox.Show(file);
                //File.SetAttributes(file, FileAttributes.Normal);
                //File.Delete(file);
            }
        }
    }
    catch (Exception ex)
    {
        // Print error message
        MessageBox.Show(ex.Message);
    }
    finally
    {
        if (con.State == ConnectionState.Open)
            con.Close();
    }
}
4

1 に答える 1

0

まず、DataSet に入力した直後に接続文字列を閉じます。DataTable で「クイック ウォッチ」を実行し、すべてのデータがそこにあることを確認します。そうでない場合は、クエリを変更します。

于 2013-03-22T10:48:14.567 に答える