请指教winform数据库备份和恢复的代码 什么数据库?access sql server? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 唉,一看就是一个半路出道的小伙子。你问个问题也说清楚一点呀。在winform里,你要备份什么样的数据库,你想恢复什么样的数据库?不同的数据库所用的方法是有很大差异的。再说,一般情况下,我们都是使用数据库的相关产品来备份、恢复的。而不是使用winform。 access数据库和sql数据库都给可以吗? 应为现在编码用到的是access数据库,可能以后要导入到sql数据库中进行管理,所以可能两个数据库都需要,请指教! using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Data.SqlClient;namespace BKAndRC{ public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.TextBox txtName; private System.Windows.Forms.TextBox txtPwd; private System.Windows.Forms.TextBox txtServer; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.Button button1; private System.Windows.Forms.Label label4; private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.Button button2; private System.Windows.Forms.Label label5; private System.Windows.Forms.TextBox txtSavefile; private System.Windows.Forms.Button button3; private System.Data.SqlClient.SqlConnection sqlconn; private System.Data.SqlClient.SqlCommand sqlcom; private System.Windows.Forms.Label label6; private System.Windows.Forms.TextBox txtNewdb; private System.ComponentModel.Container components = null; System.Random iR=new Random(); public Form1() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code private void InitializeComponent() { this.txtName = new System.Windows.Forms.TextBox(); this.txtPwd = new System.Windows.Forms.TextBox(); this.txtServer = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.button1 = new System.Windows.Forms.Button(); this.label4 = new System.Windows.Forms.Label(); this.comboBox1 = new System.Windows.Forms.ComboBox(); this.sqlconn = new System.Data.SqlClient.SqlConnection(); this.button2 = new System.Windows.Forms.Button(); this.label5 = new System.Windows.Forms.Label(); this.txtSavefile = new System.Windows.Forms.TextBox(); this.button3 = new System.Windows.Forms.Button(); this.sqlcom = new System.Data.SqlClient.SqlCommand(); this.txtNewdb = new System.Windows.Forms.TextBox(); this.label6 = new System.Windows.Forms.Label(); this.SuspendLayout(); this.txtName.Location = new System.Drawing.Point(152, 24); this.txtName.Name = "txtName"; this.txtName.Size = new System.Drawing.Size(64, 21); this.txtName.TabIndex = 0; this.txtName.Text = "sa"; this.txtPwd.Location = new System.Drawing.Point(152, 56); this.txtPwd.Name = "txtPwd"; this.txtPwd.Size = new System.Drawing.Size(64, 21); this.txtPwd.TabIndex = 1; this.txtPwd.Text = ""; this.txtServer.Location = new System.Drawing.Point(152, 88); this.txtServer.Name = "txtServer"; this.txtServer.TabIndex = 2; this.txtServer.Text = "(local)"; this.label1.Location = new System.Drawing.Point(48, 24); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(96, 23); this.label1.TabIndex = 3; this.label1.Text = "登录名:"; this.label2.Location = new System.Drawing.Point(48, 56); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(96, 23); this.label2.TabIndex = 4; this.label2.Text = "登录密码:"; this.label3.Location = new System.Drawing.Point(48, 88); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(96, 23); this.label3.TabIndex = 5; this.label3.Text = "服务器:"; this.button1.Location = new System.Drawing.Point(48, 120); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(56, 23); this.button1.TabIndex = 6; this.button1.Text = "连接"; this.button1.Click += new System.EventHandler(this.button1_Click); this.label4.Location = new System.Drawing.Point(48, 168); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(104, 16); this.label4.TabIndex = 7; this.label4.Text = "要操作的数据库:"; this.comboBox1.Enabled = false; this.comboBox1.Location = new System.Drawing.Point(168, 168); this.comboBox1.Name = "comboBox1"; this.comboBox1.Size = new System.Drawing.Size(144, 20); this.comboBox1.TabIndex = 8; this.comboBox1.Text = "请选择"; this.button2.Enabled = false; this.button2.Location = new System.Drawing.Point(48, 256); this.button2.Name = "button2"; this.button2.TabIndex = 9; this.button2.Text = "备份"; this.button2.Click += new System.EventHandler(this.button2_Click); this.label5.Location = new System.Drawing.Point(48, 200); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(104, 16); this.label5.TabIndex = 10; this.label5.Text = "存储文件:"; this.txtSavefile.Location = new System.Drawing.Point(168, 200); this.txtSavefile.Name = "txtSavefile"; this.txtSavefile.Size = new System.Drawing.Size(160, 21); this.txtSavefile.TabIndex = 11; this.txtSavefile.Text = "c:\\\\test.dat"; this.button3.Enabled = false; this.button3.Location = new System.Drawing.Point(216, 256); this.button3.Name = "button3"; this.button3.TabIndex = 12; this.button3.Text = "还原"; this.button3.Click += new System.EventHandler(this.button3_Click); this.txtNewdb.Location = new System.Drawing.Point(168, 232); this.txtNewdb.Name = "txtNewdb"; this.txtNewdb.Size = new System.Drawing.Size(160, 21); this.txtNewdb.TabIndex = 14; this.txtNewdb.Text = ""; this.label6.Location = new System.Drawing.Point(48, 232); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(104, 16); this.label6.TabIndex = 13; this.label6.Text = "还原为:"; this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(376, 285); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.txtNewdb, this.label6, this.button3, this.txtSavefile, this.label5, this.button2, this.comboBox1, this.label4, this.button1, this.label3, this.label2, this.label1, this.txtServer, this.txtPwd, this.txtName}); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion [STAThread] static void Main() { Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) { string connstr="Data Source=" + txtServer.Text + ";User id=" + txtName.Text + ";Password=" + txtPwd.Text + "; Initial Catalog=master"; sqlconn=new SqlConnection(connstr); sqlconn.Open(); sqlcom=new SqlCommand("select name from sysdatabases",sqlconn); SqlDataReader myReader = sqlcom.ExecuteReader(); try { comboBox1.Items.Clear(); while (myReader.Read()) { comboBox1.Items.Add(myReader.GetString(0)); } } finally { myReader.Close(); } if (comboBox1.Items.Count>1) { button2.Enabled=true; button3.Enabled=true; comboBox1.Enabled=true; comboBox1.Focus(); } } private void button2_Click(object sender, System.EventArgs e) { sqlcom=new SqlCommand("sp_addumpdevice",sqlconn); sqlcom.CommandType=CommandType.StoredProcedure; SqlParameter sparm=sqlcom.Parameters.Add("@devtype",SqlDbType.VarChar,20); sparm.Value="disk"; sparm=sqlcom.Parameters.Add("@logicalname",SqlDbType.VarChar); sparm.Value="test" + iR.Next(20000).ToString(); //该参数对应逻辑文件名称,不能重复,每次需更改 sparm=sqlcom.Parameters.Add("@physicalname",SqlDbType.VarChar); sparm.Value=txtSavefile.Text;//如果已进行一次绑定,下一次需更名。 try { sqlcom.ExecuteNonQuery(); } catch (System.Exception e1) { MessageBox.Show("存储文件重名,请更改存储文件名"); return; } txtNewdb.Text=comboBox1.SelectedItem.ToString(); sqlcom=new SqlCommand("BACKUP DATABASE " + comboBox1.SelectedItem.ToString() + " TO test12345",sqlconn); sqlcom.ExecuteNonQuery(); MessageBox.Show("备份成功,你可以尝试删除该数据库,点击还原即可恢复"); } private void button3_Click(object sender, System.EventArgs e) { //通过文件还原,如果要还原成其它数据库,在sql server的联机Transact_sql中有相关的参考和示例--RESTORE DATABASE sqlcom=new SqlCommand("RESTORE DATABASE " + txtNewdb.Text + " FROM Disk='" +txtSavefile.Text +"'" ,sqlconn); //此处只能还原为原来的数据库名称,否则会出错!如果想更名,需要加上WITH MOVE xxx TO xx 条件。 sqlcom.ExecuteNonQuery(); MessageBox.Show("还原成功"); } }} 如何设置旺旺发送文本的颜色? PLC和C#串行通信问题 如何在DATAGRIDVIEW中调用DATETIMEPICKER 购房贷款计算器源码 弱弱的问关于往数据库中成批的添加数据。 请教个控件问题 为什么我的程序打包后的默认安装路径总是c:\program files\danluo?想改成c:\ C#(正则表达式数据筛选) C# 报表开发 .net操作问题(欢迎计论) 我自己用C#的SOCKET写了个TCP网络控件,已经传上去了,不知道发布了没! “刷新”的问题
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;namespace BKAndRC
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox txtName;
private System.Windows.Forms.TextBox txtPwd;
private System.Windows.Forms.TextBox txtServer;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox txtSavefile;
private System.Windows.Forms.Button button3;
private System.Data.SqlClient.SqlConnection sqlconn;
private System.Data.SqlClient.SqlCommand sqlcom;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox txtNewdb;
private System.ComponentModel.Container components = null;
System.Random iR=new Random(); public Form1()
{
InitializeComponent();
} protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows Form Designer generated code
private void InitializeComponent()
{
this.txtName = new System.Windows.Forms.TextBox();
this.txtPwd = new System.Windows.Forms.TextBox();
this.txtServer = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.sqlconn = new System.Data.SqlClient.SqlConnection();
this.button2 = new System.Windows.Forms.Button();
this.label5 = new System.Windows.Forms.Label();
this.txtSavefile = new System.Windows.Forms.TextBox();
this.button3 = new System.Windows.Forms.Button();
this.sqlcom = new System.Data.SqlClient.SqlCommand();
this.txtNewdb = new System.Windows.Forms.TextBox();
this.label6 = new System.Windows.Forms.Label();
this.SuspendLayout();
this.txtName.Location = new System.Drawing.Point(152, 24);
this.txtName.Name = "txtName";
this.txtName.Size = new System.Drawing.Size(64, 21);
this.txtName.TabIndex = 0;
this.txtName.Text = "sa";
this.txtPwd.Location = new System.Drawing.Point(152, 56);
this.txtPwd.Name = "txtPwd";
this.txtPwd.Size = new System.Drawing.Size(64, 21);
this.txtPwd.TabIndex = 1;
this.txtPwd.Text = "";
this.txtServer.Location = new System.Drawing.Point(152, 88);
this.txtServer.Name = "txtServer";
this.txtServer.TabIndex = 2;
this.txtServer.Text = "(local)";
this.label1.Location = new System.Drawing.Point(48, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(96, 23);
this.label1.TabIndex = 3;
this.label1.Text = "登录名:";
this.label2.Location = new System.Drawing.Point(48, 56);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(96, 23);
this.label2.TabIndex = 4;
this.label2.Text = "登录密码:";
this.label3.Location = new System.Drawing.Point(48, 88);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(96, 23);
this.label3.TabIndex = 5;
this.label3.Text = "服务器:";
this.button1.Location = new System.Drawing.Point(48, 120);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(56, 23);
this.button1.TabIndex = 6;
this.button1.Text = "连接";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.label4.Location = new System.Drawing.Point(48, 168);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(104, 16);
this.label4.TabIndex = 7;
this.label4.Text = "要操作的数据库:";
this.comboBox1.Enabled = false;
this.comboBox1.Location = new System.Drawing.Point(168, 168);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(144, 20);
this.comboBox1.TabIndex = 8;
this.comboBox1.Text = "请选择";
this.button2.Enabled = false;
this.button2.Location = new System.Drawing.Point(48, 256);
this.button2.Name = "button2";
this.button2.TabIndex = 9;
this.button2.Text = "备份";
this.button2.Click += new System.EventHandler(this.button2_Click);
this.label5.Location = new System.Drawing.Point(48, 200);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(104, 16);
this.label5.TabIndex = 10;
this.label5.Text = "存储文件:";
this.txtSavefile.Location = new System.Drawing.Point(168, 200);
this.txtSavefile.Name = "txtSavefile";
this.txtSavefile.Size = new System.Drawing.Size(160, 21);
this.txtSavefile.TabIndex = 11;
this.txtSavefile.Text = "c:\\\\test.dat";
this.button3.Enabled = false;
this.button3.Location = new System.Drawing.Point(216, 256);
this.button3.Name = "button3";
this.button3.TabIndex = 12;
this.button3.Text = "还原";
this.button3.Click += new System.EventHandler(this.button3_Click);
this.txtNewdb.Location = new System.Drawing.Point(168, 232);
this.txtNewdb.Name = "txtNewdb";
this.txtNewdb.Size = new System.Drawing.Size(160, 21);
this.txtNewdb.TabIndex = 14;
this.txtNewdb.Text = "";
this.label6.Location = new System.Drawing.Point(48, 232);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(104, 16);
this.label6.TabIndex = 13;
this.label6.Text = "还原为:";
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(376, 285);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.txtNewdb,
this.label6,
this.button3,
this.txtSavefile,
this.label5,
this.button2,
this.comboBox1,
this.label4,
this.button1,
this.label3,
this.label2,
this.label1,
this.txtServer,
this.txtPwd,
this.txtName});
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); }
#endregion
static void Main()
{
Application.Run(new Form1());
} private void button1_Click(object sender, System.EventArgs e)
{
string connstr="Data Source=" + txtServer.Text + ";User id=" + txtName.Text + ";Password=" + txtPwd.Text + "; Initial Catalog=master";
sqlconn=new SqlConnection(connstr);
sqlconn.Open();
sqlcom=new SqlCommand("select name from sysdatabases",sqlconn);
SqlDataReader myReader = sqlcom.ExecuteReader();
try
{
comboBox1.Items.Clear();
while (myReader.Read())
{
comboBox1.Items.Add(myReader.GetString(0));
}
}
finally
{
myReader.Close();
}
if (comboBox1.Items.Count>1)
{
button2.Enabled=true;
button3.Enabled=true;
comboBox1.Enabled=true;
comboBox1.Focus();
}
} private void button2_Click(object sender, System.EventArgs e)
{
sqlcom=new SqlCommand("sp_addumpdevice",sqlconn);
sqlcom.CommandType=CommandType.StoredProcedure;
SqlParameter sparm=sqlcom.Parameters.Add("@devtype",SqlDbType.VarChar,20);
sparm.Value="disk";
sparm=sqlcom.Parameters.Add("@logicalname",SqlDbType.VarChar);
sparm.Value="test" + iR.Next(20000).ToString(); //该参数对应逻辑文件名称,不能重复,每次需更改
sparm=sqlcom.Parameters.Add("@physicalname",SqlDbType.VarChar);
sparm.Value=txtSavefile.Text;//如果已进行一次绑定,下一次需更名。
try
{
sqlcom.ExecuteNonQuery();
}
catch (System.Exception e1)
{
MessageBox.Show("存储文件重名,请更改存储文件名");
return;
}
txtNewdb.Text=comboBox1.SelectedItem.ToString();
sqlcom=new SqlCommand("BACKUP DATABASE " + comboBox1.SelectedItem.ToString() + " TO test12345",sqlconn);
sqlcom.ExecuteNonQuery();
MessageBox.Show("备份成功,你可以尝试删除该数据库,点击还原即可恢复");
} private void button3_Click(object sender, System.EventArgs e)
{
//通过文件还原,如果要还原成其它数据库,在sql server的联机Transact_sql中有相关的参考和示例--RESTORE DATABASE
sqlcom=new SqlCommand("RESTORE DATABASE " + txtNewdb.Text + " FROM Disk='" +txtSavefile.Text +"'" ,sqlconn);
//此处只能还原为原来的数据库名称,否则会出错!如果想更名,需要加上WITH MOVE xxx TO xx 条件。
sqlcom.ExecuteNonQuery();
MessageBox.Show("还原成功");
} }
}