刚使用VB.Net开发项目,在使用vb.net的过程中走了很多弯路. 希望自己的经验能给各位带来一些帮助. [如果各位需要代码的话,可以留下Email,大家互相交流经验]
项目总结[4]--数据库备份篇 本节只考虑使用SqlServer做备份例子 一般来说,如果使用SqlServer做数据备份,很多人都提出这样问题?? SqlServer一般来说数据备份只能备份在服务器机器里,Client端如何把该数据库保留在本地呢? 本文目的是如何解答该问题. 理论方法如下 一.备份方式一[Internet或者局域网] 1.在服务器中使用SqlServer做好备份文件 2.把该备份文件放到IIS目录下[必须保证服务器有Web方式访问] 3.使用Explorer把文件直接DownLoad在Client 或者使用文件流方式把文件读到本地机器
二.备份方式二 1.在服务器中使用SqlServer做好备份文件 2.使用文件流方式把文件读到本地机器[局域网] 或者使用WebServer方式把文件读到本地机器[Internet或者局域网]
三.备份方式三[Internet或者局域网] 1.可以直接使用SqlServer任务功能把备份方式一备份方式二的步骤1.2同时做完 2.可以直接套用前面两个方法来做
四.备份方式四[Internet或者局域网] 1.使用上面三种方式的步骤一二来完成 2.把备份文件读进SqlServer中的其中一个表 3.通过SqlServer来读出数据,写文件到Client
以上四种方案,我都做了大概的流程分析,以上方法都可行
Example,由于时间紧,我没有把四种方式代码都编写好[各位可以自己测试] 我只对第一种方式做了详细解释 'windBackUp是自己定义的一个类,只用存储过程来备份一个数据 Dim myBackUp As winBackUp.BackUp = New winBackUp.BackUp("myDataBase", "sa", "sa") '执行备份功能 Dim result As Boolean = myBackUp.BackUpDataBase("myDataBase", "c:\\myDataBase.dat") '如果备份成功,那么进行下面操作 If result = True Then 'IISManager是其中一个类,目的是求出IIS服务的物理路径 Dim myIIs As IISManager = New IISManager() myIIs.Connect() '直接调用Shell方法,来进行文件Copy Dim strbackup As String = "xCopy C:\\myDataBase.dat " + myIIs.IISPath + "\myDataBase.dat/-Y" Dim i As Integer = Shell(strbackup, AppWinStyle.MinimizedNoFocus, True) '如何下载这里没有详细说明,相信各位都应该清楚如何使用 'http://servername/myDataBase.dat End If '附windBackUp IISManager类主要函数供参考 Public Class IISManager Protected rootfolder As System.DirectoryServices.DirectoryEntry Public Sub New() '默认情况下使用localhost,即访问本地机 _server = "localhost" _website = "1" _batchflag = False End Sub 'New Public Overloads Sub Connect() ConnectToServer() End Sub 'Connect '/<summary> '/私有方法 '/</summary> '连接服务器 Private Sub ConnectToServer() Dim strPath As String = "IIS://" + _server + "/W3SVC/" + _website + "/ROOT" Try Me.rootfolder = New DirectoryEntry(strPath) _virdirs = GetVirDirs(Me.rootfolder.Children) Catch e As Exception Throw New Exception("Can't connect to the server [" + _server + "] ...", e) End Try End Sub 'ConnectToServer '/ <summary> '/ 取得服务器所在的物理路径 '/ </summary> '/ <returns>IIS的物理路径</returns> Public Function IISPath() As String Return rootfolder.Properties("path").Value.ToString() End Function 'IISPath
'该类使用C#写的... namespace winBackUp /// <summary> /// 初试化 /// </summary> /// <param name="databasename">数据库名</param> /// <param name="databaseuser">数据库用户名</param> /// <param name="databasepass">数据库密码</param> public BackUp(string databasename,string databaseuser,string databasepass) { // // TODO: 在此处添加构造函数逻辑 // string sql="data source=localhost;initial catalog="+databasename+";password="+databasepass+";persist security info=True;user id="+databaseuser+";workstation id=TOPS03496;packet size=4096"; //注意默认数据库不要和恢复的数据库同名 init(sql); }
/// <summary> /// 备份数据库 /// </summary> /// <param name="databasename">要备份的数据源名称</param> /// <param name="backuptodatabase">备份到的数据库文件名称及路径</param> /// <returns></returns> public bool BackUpDataBase(string databasename,string backuptodatabase) { ....... //备份数据库到指定的数据库文件(完全备份) sql="BACKUP DATABASE "+databasename +" TO "+databasename +" WITH INIT"; SqlCommand sqlcmd3=new SqlCommand(sql,conn); sqlcmd3.CommandType =CommandType.Text; try { sqlcmd3.ExecuteNonQuery(); } catch(Exception err) { string str=err.Message ; conn.Close();
return false; } ..... }
项目总结--启动窗体篇 http://expert.csdn.net/Expert/TopicView1.asp?id=2513452 项目总结[2]--菜单篇 http://expert.csdn.net/Expert/TopicView1.asp?id=2557044 项目总结[3]--浅谈窗体间传值,并提供实例 http://expert.csdn.net/Expert/TopicView1.asp?id=2523412 
|