《2022年用C#程序备份和还原数据库 .pdf》由会员分享,可在线阅读,更多相关《2022年用C#程序备份和还原数据库 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 目录一、在文本框中实现光标定位 2二、用键盘操作控件的事件 3三、重启服务 4四、文件操作(命名空间:System.IO) 51、判断文件夹是否存在 52、判断文件是否已存在 53、选择文件保存位置 54、打开一个文件 65、读取记事本中文件内容 66、创建一个记事本文件并向其中添加内容 6五、用 C#语言对 SQL Server2008数据库进行操作(命名空间:System.Data.SqlClient ) 71、连接数据库 72、查询信息 93、曾删改数据 104、打印数据 115、备份数据 126、还原数据库数据 13名师资料总结 - - -精品资料欢迎下载 - - - - - -
2、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 2 一、在文本框中实现光标定位方法一:/首先让文本框获得焦点this.txtBox.Focus(); /设置光标的位置到文本尾this.txtBox.Select(this.txtBox.TextLength,0); /滚动条滚动到控件光标处this.txtBox.ScrollToCaret(); 方法二:/获得焦点this.txtBox.Focus(); /设置光标的位置到文本尾this.txtBox.SelectionStart = thi
3、s.txtBox.TextLength; /滚动条滚动到控件光标处this.txtBox.ScrollToCaret(); 总结:使用本方法可以实现光标任意位置的定位,其中方法一还可以实现“ 查找与替换 ” 的功能。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 3 二、用键盘操作控件的事件键盘事件有以下三种:keypress(按下并释放控件所触发),keydown(按下控件触发 ),keyup(松开控件触发 )由于键盘事件必
4、须要获得焦点,所以不应该直接把键盘事件写在按钮上面,而应该写在Form 上面,如下是一个举例:private void Form1_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = 1) button1_Click(sender,e); 这样在运行窗体后每次按数字1都会触发 button1的单击事件。 (注意:必须把窗体的KeyPreview属性设置为 true)总结:由此可以使用键盘操作其他控件名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
5、- - - - - - - 第 3 页,共 14 页 - - - - - - - - - 4 三、重启服务#region 重启服务/ / 重启服务 (操作服务需要添加 System.ServiceProcess 引用并导入包 System.ServiceProcess )/ / 服务名 / 重启异常信息 private string RestartService( string serveName) /操作服务对象 ServiceController sc = new ServiceController (serveName); /停止服务try sc.Refresh();/刷新属性值 |if
6、 (sc.Status = ServiceControllerStatus.Running) sc.Stop(); /设置等待时间为秒TimeSpan ts = new TimeSpan(0, 0, 30); /等待服务到达停止状态sc.WaitForStatus(ServiceControllerStatus.Stopped, ts); /重新开启服务sc.Refresh();/刷新属性值 |if (sc.Status = ServiceControllerStatus.Stopped) sc.Start(); /等待服务到达运行状态sc.WaitForStatus(ServiceContr
7、ollerStatus.Running, ts); return string.Empty; catch (Exception e) return 重启服务出现异常 + e.Message; #endregion 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 5 四、文件操作(命名空间:System.IO)1、判断文件夹是否存在bool a= Directory.Exists(D:QQ2010Bin ); 2、判断文件是否已
8、存在File.Exists(D:QQ2010Binqq.exe ) 3、选择文件保存位置/文件保存位置对象SaveFileDialog sf = new SaveFileDialog(); /设置默认文件名sf.FileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() ; /设置文件筛选字符串sf.Filter = *.mdb|*.mdb|*.bak|*.bak|*.*|*.*; /打开文件选择对话框if (sf.ShowDialog() = Dia
9、logResult.OK) /文件保存路径string path= sf.FileName; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 6 4、打开一个文件/源文件位置对象OpenFileDialog of = newOpenFileDialog(); /文件筛字符串of.Filter = *.mdb|*.mdb|*.bak|*.bak|*.*|*.*; /打开文件选择对话框if (of.ShowDialog() = D
10、ialogResult.OK) /源文件路径string path = of.FileName; 5、读取记事本中文件内容File.ReadAllText( 文件路径 , Encoding.GetEncoding(gb2312 ); 6、创建一个记事本文件并向其中添加内容File.WriteAllText( 文件路径 ,要写入的字符串 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 7 五、用 C#语言对 SQL Ser
11、ver2008 数据库进行操作(命名空间: System.Data.SqlClient)1、连接数据库/连接字符串conststring _sqlString = Data Source=.;Initial Catalog=Library; Integrated Security=True; /连接对象SqlConnection _conn = newSqlConnection(_sqlString); / / 打开数据库连接/ public void connOpen() if (_conn.State = ConnectionState .Closed) _conn.Open(); 名师资
12、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 8 elseif (_conn.State = ConnectionState .Broken) _conn.Close(); _conn.Open(); private SqlCommand _command; / / SqlCommand属性/ public SqlCommand Command get if (_command = null) _command = new Sql
13、Command(); _command.Connection = _conn; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - 9 return _command; 2、查询信息/ / 查询信息,返回异常信息/ / SQL查询语句 / 查询的结果表 / 异常信息 public string SelectInFo(string sqlStr, DataTable table) string message = string.Em
14、pty; Command.CommandText = sqlStr; da.SelectCommand = Command; try da.Fill(table); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 10 catch (Exception e) message = e.Message; return message; 3、曾删改数据/ / 执行曾删改的方法;返回受影响的行数/ / SQL操作语句 / 异常信息 /
15、 受影响的行数 public int UpdateoInfo(string sqlStr, outstring message) message = string.Empty; Command.CommandText = sqlStr; int item = 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - 11 try connOpen(); item = Command.ExecuteNonQuery(); catc
16、h (Exception e) message = e.Message; ; finally _conn.Close(); return item; 4、打印数据/ / 打印数据/ / DataTable数据表 public void Print(DataTable table) /选择文件对话框名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 12 SaveFileDialog sf = new SaveFileDialog
17、(); sf.Filter = excel文件 |*.xls ; if (sf.ShowDialog() = DialogResult .OK) FileStream fs = File.Open(sf.FileName, FileMode .Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding(gb2312); string line = ; foreach (DataGridViewColumn dvc in table.Columns) line += dvc.Head
18、erText + t ; sw.WriteLine(line); foreach (DataGridViewRow dr in table.Rows) line = ; foreach (DataGridViewCell dc in dr.Cells) line += dc.Value + t ; sw.WriteLine(line); sw.Close(); fs.Close(); 5、备份数据/ / 数据备份/ / 备份路径 / 处理信息 public string Backup(string path) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
19、 - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 13 /处理信息string message; /SQL备份语句string sqlStr = string.Format(backup database Library to disk=0 with init , path); /执行 SQL语句_db.UpdateoInfo(sqlStr, out message); if (message = string.Empty) message = 备份成功 ; return message; 6、还原数据库数据
20、/ / 还原数据库数据/ / / 异常信息 public string DataBaseRestore( string path) /还原结果string result = string.Empty; /调用重新启动服务的方法RestartService(mssqlserver); /限制用户只能逐个访问数据库string sqlStr1 = ALTER DATABASE Library SET SINGLE_USER ; /_db.UpdateoInfo(sqlStr1); /还原数据result = Restore(path); /将数据库的访问权限返回其一般运行状态string sqlS
21、tr2 = ALTER DATABASE Library SET MULTI_USER; _db.UpdateoInfo(sqlStr2); return result; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 14 / / 还原数据方法/ / 源文件路径 / 异常信息 private string Restore( string path) /SQL数据还原语句StringBuilder sb = new Stri
22、ngBuilder(); sb.AppendLine( use master alter database library set online with rollback immediate); sb.AppendFormat(restore database library from disk=0 with replace , path); sb.AppendLine( alter database library set online with rollback immediate ); /创建 Sqlcommand对象string result = sb.ToString(); /异常信息string message; _db.UpdateoInfo(result, out message); return message; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -