0
private void Backup()
    {
        string x = txtb.Text; 
        string date = DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss");
        string file = x + date + "database backup.sql";
        string conn = "server = localhost; user id = root; password =; database = sais_db;";

        try
        {
            MySqlBackup mb = new MySqlBackup(conn);
            mb.Export(file);
            MessageBox.Show("Database Backup Success!");
        }

        catch (MySqlException ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

プログラムを実行するとNotSupportedExceptionエラーが発生します。どうすれば修正できますか?

PStxtb.Textには、次のようなディレクトリ パスが含まれています C:\Users\user\Desktop

4

1 に答える 1

1

DateTime 形式にコロンが含まれています。これらは、パスからドライブ文字を区切る場合を除いて、ファイルまたはパス名では許可されていません。

DateTime.Now 呼び出しのフォーマット文字列を変更することで、簡単に修正できます。

string x = txtb.Text; 
string date = DateTime.Now.ToString("MM-dd-yyyy HH-mm-ss");
string file = x + date + "database backup.sql";

これを実行すると、( txtb.Text にfooが含まれていると仮定して)file

foo09-24-2016 14-20-59データベースのバックアップ.sql

一度にそれを行うことも検討できます:

string file = String.Format(
    "{0}{1:MM-dd-yyyy HH-mm-ss}database backup.sql", 
    txtb.Text,
    DateTime.Now);

ユーザーがファイル名 (の一部) を提供できるようにする場合は、無効な文字をチェックすることを検討してください。System.IO 名前空間のPathクラスには、そのための便利なヘルパーがありGetInvalidFileNameCharsます。

if (file.IndexOfAny(Path.GetInvalidFileNameChars()) > -1) 
{
    // show an error
    MessageBox.Show("invalid characters in file");
   return;
}

InvalidPathChars にも同様の方法があります

于 2016-09-24T12:38:31.793 に答える