asp.net 后台.cs程序实现本地数据库内容导入远程服务器数据库?

asp.net 后台.cs程序实现本地数据库内容导入远程服务器数据库?,第1张

首先把自己的网站提交给搜索引擎,keywords,description,title定义关键字以后,搜索引擎会自动抓取。至于数据库的导入以及.cs文件,要把数据库备份成.bak文件后交给远程服务器。

这些你可以到我空间看看,我写的都很详细:“如何 发布 上传 asp .net 网站 包括数据库 的具体步骤”,连续三篇你都可以看看。

C# 打包和部署 1. 构建我们自己的项目(在这里我们用一个简单窗体作为我们的项目) 2. 在解决方案中添加一个安装项目,用以实现项目MyProject的打包安装 本来到此为止我们就可以对安装程序进行设置了,确定到底需要将哪些文件部署到目标机器上的哪些部分。但是由于实际需要,要求我们将数据库一起打包,所以我们的工作有所变化。 添加一个类库,增加一个安装程序类,重写该类的install方法,写入执行建库、建表脚本的代码。最后在安装项目Setup1中添加进此类库的主输出,于是当我们进行安装时,就会调用该类库的主输出,然后会自动执行install方法,结果就帮助我们在目标计算机上安装好我们项目所需要的数据库。 3. 获得建库、建表的脚本(在本机上获得需要打包的数据库的脚本,如现在打包bankDB) 注意:现在脚本文件中只有数据库的结构,如表,列,存储过程等等,但是没有数据,所以需要我们自己手动添加插入数据的这部分SQL代码.最后保存到安装项目MyProjSetup之中. 在MyProjSetup中添加该脚本文件 4. 在解决方案中添加类库DBAction用以实现数据库 *** 作 删除原有类,加入安装程序类Installer1.cs.这个类的主要功能是完成安装数据库,我们在这个类里面写执行bankDB.sql脚本文件的代码. 5. 将项目MyProject的输出(以及DBClassLibrary类库的输出 )添加到部署项目MyProjSetup中, 这里的输出将是最后在目的客户机上要安装的那些文件 右键单击MyProjSetup --->视图 --->文件系统,选择应用程序文件夹,右击,在“ *** 作”菜单上,指向“添加”,然后选择“项目输出” 分别在主输出中选中来自DBAction类库的活动和来自MyProjectV2应用程序的活动 6. 创建自定义安装对话框(比如许可协议对话框) 右键单击Setup1 --->视图 --->用户界面 在用户界面编辑器中,选择“安装”下的“启动”节点,在“ *** 作”菜单上,选择“添加对话框” 右键点击“文本框(A)”,选择上移,重复此 *** 作,直到“文本框(A)”位于“安装文件夹”节点之上 7. 添加许可协议 许可协议是RTF格式的文件,我们可以将写好的word文档另存为RTF格式文件,然后添加到MyProjectV2应用程序中. 然后将我们的”许可协议.rtf”文件和协议窗口关联起来,首先转到用户界面 在LicenseFile属性的下拉框中选择浏览,然后在下一界面选中”应用程序文件夹” 然后点击”添加文件”,找到你自己的协议文件并添加 8. 设置文本框(A)窗口(该窗口接收用户在安装时的输入,以便接收数据库的登录名和密码等等) 我们将会设置文本框(A) 窗口中的4个文本框的标签名和属性值,以及文本框的名称即Edit1Property属性,供数据库安装类使用: 在“文本框(A)”的“属性”窗口中,选择BannerText属性并键入:安装数据库 选择BodyText属性并键入:安装程序将再目标机器上安装数据库 选择Edit1Label属性并键入:数据库名称 选择Edit1Property属性并键入:EDITA1 选择Edit1Value属性并键入:bankDB 选择Edit2Label属性并键入:服务器名 选择Edit2Property属性并键入:EDITA2 选择Edit2Value属性并键入:(local) 选择Edit3Label属性并键入:用户名 选择Edit3Property属性并键入:EDITA3 选择Edit3Value属性并键入:sa(注意,这个登录用户是你的目标计算机的数据库里面存在的用户,而且他必须要具有创建数据库的权限) 选择Edit4Label属性并键入:用户密码 选择Edit4Property属性并键入:EDITA4 选择Edit4Value属性并键入:123 9. 创建自定义 *** 作(给MyInstaller.cs设置参数) 选中MyProjSetup,通过“视图”进入“自定义 *** 作” 在“安装”节点的右键菜单中选择“添加自定义 *** 作” 在“选择项目中的项”对话框中,选中应用程序文件夹后,点击确定 选择“主输出来自DBClassLibrary(活动)”项,然后单击“确定”关闭对话框 在上图主输出来自“DBClassLiabrary(活动)”的“属性”窗口中,选择CustomActionData 属性并键入/dbname=[EDITA1] /server=[EDITA2] /user=[EDITA3] /pwd=[EDITA4] /targetdir="[TARGETDIR]\", [TARGETDIR]代表的是当用户在安装项目时,所选择的目的地址,一旦确定。就会将MyProjSetup下面的文件拷贝到该路径下面,供安装使用。 使用.net打包程序时,在安装过程中用户所选择的安装路径中是不能含有空格的。为什么呢?原来是sql server的 osql 的执行命令行方式的时候,如果你的安装路径中含有空格的话,那个命令行是不能正确的执行的。 10. 最后还要保证我们项目运行所必须的环境(.Net Framework等) 右键单击安装项目的项目名,进入属性 点击系统必备 11. 在DBClassLiabrary类库的MyInstaller.cs文件中编写安装数据库的代码 using Systemusing System.Collections.Genericusing System.ComponentModelusing System.Configuration.Installusing System.Data.SqlClientusing Microsoft.Win32 namespace DBAction { [RunInstaller(true)] public partial class MyInstaller : Installer { public MyInstaller() { InitializeComponent()} private void ExecuteSql(string connString, string DBName, string sqlString) { SqlConnection conn = new SqlConnection(connString)SqlCommand comm = new SqlCommand(sqlString, conn) try { conn.Open()conn.ChangeDatabase(DBName)//更改当前数据库 comm.ExecuteNonQuery()} catch (SqlException ex) { Console.WriteLine(ex.Message)} finally { conn.Close()} } //重写Install方法 public override void Install(System.Collections.IDictionary stateSaver) { base.Install(stateSaver)try { //创建数据库 string connStr = string.Format("data source={0}user id={1}password={2}persist security info = falsepacket size=4096", this.Context.Parameters["server"], this.Context.Parameters["User"], this.Context.Parameters["pwd"]) ExecuteSql(connStr, "master", "create database " + this.Context.Parameters["dbname"]) //创建一个进程用来执行sql脚本---建表 System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process() //设置该进程要启动的文档是"osql.exe",这个执行文件用来在命令行执行sql脚本文件 sqlProcess.StartInfo.FileName = "osql.exe" //配置进程需要的参数 //Context.Parameters--获取在运行InstallUtil.exe时输入的命令行参数 sqlProcess.StartInfo.Arguments = string.Format("-U {0} -P {1} -i {2}bankDB.sql", this.Context.Parameters["user"], this.Context.Parameters["pwd"], this.Context.Parameters["targetdir"]) sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden} catch (Exception ex) { Console.Write(ex.ToString())} } /// <summary> /// 重载OnBeforeInstall,确定是否安装.NETFramework /// </summary> protected override void OnBeforeInstall(System.Collections.IDictionary savedState) { base.OnBeforeInstall(savedState)try { Microsoft.Win32.RegistryKey key//定义注册表键 //读取相同位置上的信息,若key为空,则不存在此键值,则进行安装;相反为存在则不安装 key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\.NETFramework", true)if (key == null) { Process.Start(Context.Parameters["targetdir"].ToString() + @" dotnetfx \dotnetfx.exe")//得到安装后文件的路径,并通过路径和文件名来启动 } } catch (Exception e)//抓取错误信息,并给予提示 { MessageBox.Show("安装程序错误!错误提示:" + e.Message)} } } } 提示: 在bankDB.sql脚本文件中最好加上 USE bankDB GO ,为了使安装程序程序能够正确运行,必须确保你的bankDB.sql脚本文件准确无误,检查方法就是在命令行中输入:C:>osql –U sa –P 123 –i D:\打包示例\bankDB.sql 如果在你自己的机器上能生成数据库bankDB,就说明sql脚本没错 12. 整个解决方案全部完成后,请分别生成3个项目的执行文件,确保得到最新结果。其中在MyProjSetup的Debug文件夹中的就是我们需要的结果 我们双击setup.exe或者MyProjSetup.msi之后,就能够在目标计算机上安装bank数据库和我们自己的MyProjectV2的执行文件了 我的目标文件选择的是D:\SetupDemo,最后在该文件夹下的文件如下: 可以看到在目标机器上的目标路径下包含了项目所需要的各个类库、文件等等,以及自己的执行文件 /dbname=[EDITA1] /server=[EDITA2] /user = [EDITA3] /pwd = [EDITA4] /targetdir="[TARGETDIR]\" -------错误 /dbname=[EDITA1] /server=[EDITA2] /user=[EDITA3] /pwd=[EDITA4] /targetdir="[TARGETDIR]\" ------- 正确 切记切记: /key=[value] 之间绝对不能有空格 最后需要在目标机器上安装.net framework.另外app.Config配置文件也可以打包,而且在打包后会自动出现在目标机器的目标文件夹,因此并不存在打包后无法修改配置文件的情况。 <appSettings><add key=”connStr”value=”………”></ appSettings >注意需要添加引用System.Configration 点击系统必备 选择你需要的组件,如.Net Framework2.0 和水晶报表组件等


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9960971.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存