私はC#アプリケーションを作成して、多くの.bakファイルをresotreディレクトリに保存しています。今は問題なく動作しますが、私は解決できないような問題が1つあり、あなたの助けが必要です。 ExecuteNonQueryは1つの.bakファイルを復元するためにWhileを受け取り、ExecuteNonQueryが完了するたびにメッセージでテキストボックスを更新します。メソッドの実行後にTextBoxを更新するWinforms
私はExecuteNonQueryAsyncを呼び出そうとしましたが、私はこのメッセージを得る:
接続は充電MultipleActiveResultSetsに
をとらない私の質問は:どのように私は、テキストボックスを更新することができ、それぞれの時間は、ExecuteNonQueryを仕上げ?ここで
は私のコードで、アドバイスしてください:のexecuteQueryため
foreach (FileInfo file in Files)
{
string DbNamequery = "RESTORE FILELISTONLY FROM DISK = N'" + FolderBrowser.SelectedPath + @"\" + file.Name + "'" ;
sqlform.ConSQL.PrepareQuery(DbNamequery);
try
{
string DbName = sqlform.ConSQL.GetDataBaseName();
string RestoreQuery = "RESTORE DATABASE [" + file.Name + "] FILE = N'" + DbName + "' FROM DISK = N'" + FolderBrowser.SelectedPath + @"\" + file.Name;
RestoreQuery += "' WITH FILE = 1,MOVE N'" + DbName + @"' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\" + file.Name + ".mdf'";
RestoreQuery += ",MOVE N'" + DbName + @"_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\" + file.Name + "_0.ldf',";
RestoreQuery += "NOUNLOAD, STATS = 10";
sqlform.ConSQL.PrepareQuery(RestoreQuery);
sqlform.ConSQL.ExecuteQuery();
ReportTextBox.Text += "Data Base : " + DbName + " Has been Restored With this Name :" + file.Name + " Successfully \r\n";
}
catch (Exception ex)
{
ReportTextBox.Text += "Couldn't Resotre File " + file.Name + " Because of The following : \r\n" + ex.Message;
}
}
定義():
public async void ExecuteQuery()
{
int x = await cmd.ExecuteNonQueryAsync();
}
を私は同期クエリを実行すると、それが正常に動作しますが、ReportTextboxがするまで更新されません。ループは終了しました。また、このコードは、事前に
おかげであなたはasync void
メソッドを持つべきではないすべての
オハイオ州私はタスクを返すことを考えなかったので、すべてのAsyncronos Methodeはタスクタイプのものを返しますか?しかし、今はそれが私のテキストボックスを更新していますが、クエリが結果をよく実行しても> 0テストはいつも失敗しますか?私はtry try catchがRESTORE操作が成功するかどうかを検出するのに十分だろうと思います。とにかく本当に助けてくれたあなたの洞察に感謝の男 –