我遇到了一个需要通过Winforms备份数据库的问题。我设法找到一个示例SQL代码,以实现此任务。
我在这里查询:
SqlConnection CON = new SqlConnection("Data Source=DBS\\DB;Initial Catalog=" + metroTextBox1.Text + ";Integrated Security=True");
Sql = "BACKUP DATABASE " + metroComboBox1.Text + " TO DISK = '" + metroTextBox4.Text + "\\" + metroComboBox1.Text + "-" + DateTime.Now.Ticks.ToString() + ".bak'";
我不知道接下来该怎么做。在这种情况下我应该使用什么? (ExecuteScalar
,ExecuteNonQuery
..等)
任何帮助,将不胜感激。
请注意,备份文件名中也有日期时间。
添加这些行将执行:
CON .Open();
SqlCommand NewCommand = new SqlCommand(Sql, CON);
NewCommand.ExecuteNonQuery();
CON .Close();
您定义要执行的SQL命令,然后实例化SqlCommand
。由于SQL语句不会返回任何数据(结果集等),因此请使用ExecuteNonQuery
:
string Sql = "BACKUP DATABASE " + metroComboBox1.Text + " TO DISK = '" + metroTextBox4.Text + "\\" + metroComboBox1.Text + "-" + DateTime.Now.Ticks.ToString() + ".bak'";
using(SqlConnection CON = new SqlConnection("Data Source=DBS\\DB;Initial Catalog=" + metroTextBox1.Text + ";Integrated Security=True"))
using(SqlCommand cmdBackup = new SqlCommand(Sql, CON))
{
// open connection, execute command, close connection
CON.Open();
cmdBackup.ExecuteNonQuery();
CON.Close();
}
一般代码:
using (var conn = new SqlConnection(connString))
{
conn.Open();
using (var comm = conn.CreateCommand())
{
comm.CommandType = CommandType.Text;
comm.CommandText = "BACKUP DATABASE...";
comm.ExecuteNonQuery();
}
}