实现效果:安装项目时直接附加数据库。
1.首先在需要部署的项目的解决方案资源管理器中新建一个安装项目
2.在安装项目的文件视图中,右键【应用程序文件夹】->【添加】->【项目输出】
选择你的项目中的启动项目,下面的列表中,默认就是主输出,确定。
3.此时在文件系统的中间栏目,会自动列出编译所需的文件。一个简单项目打包差不多,还有快捷方式什么的,就不说了。开始重点了。
创建安装程序类
4.在解决方案资源管理器中,新建一个类库项目【InstallDB】,删除Class1.cs,新建一个安装程序类[InstallDB.cs],等下将在这个类中编写附加数据库代码。
创建自定义安装对话框
5.在刚新建的安装项目上右键,【视图】->【用户界面】:
在用户界面中,右键【启动】-【添加对话框】-选择【文本框(A)】-确定。
6.然后右键这个文本框(A),将其上移欢迎使用下面:
右键选择【属性】,参考下图的信息填写:

7.在刚新建的安装项目上右键,【视图】->【自定义操作】:
8.右键【自定义操作界面】的【安装】节点,【添加自定义操作】,弹出的对话框。
9.查找范围里选择应用程序文件夹,再点击右侧的【添加输出(O)…】,选择刚新建的安装程序类项目,默认还是主输出,确定。此时:
10.右键这个【主输出来自InstallDB(活动)】,进入属性界面,在【CustomActionData】属性里输入下面的内容:
/dbname=[DBNAME] /server=[SERVER] /user=[USER] /pwd=[PWD] /targetdir="[TARGETDIR]\"
说明:其中前四个方括号中的大写字母,为上面第6步图中输入的四个EditProPerty属性,需要对应好。最后一个targetdir的值的意思是安装后文件的目录路径。
特别提醒:前三个"/XXX=[XXX]"后面  ,都有一个空格的,小xin曾因此烦恼甚久,网上的某些教程实在是。。。很耐人。
11.现在可以添加数据库文件了,在刚新建的安装项目上右键,【添加】->【文件】,选择你的MDF和LDF文件,就是安装时需要附加的数据库文件。
12.最后,我们只需在安装程序类里编写附加数据库的代码了。打开上面第4步中新建的安装程序类,参考下方的代码,编写适合您的附加数据库代码:
/// <summary>
/// 附加数据库方法
/// </summary>
/// <param name="strSql">连接数据库字符串,连接master系统数据库</param>
/// <param name="DataName">数据库名字</param>
/// <param name="strMdf">数据库文件MDF的路径</param>
/// <param name="strLdf">数据库文件LDF的路径</param>
/// <param name="path">安装目录</param>
private   void  CreateDataBase( string  strSql, string  DataName,  string  strMdf,  string  strLdf, string  path)
{SqlConnection myConn = new SqlConnection(strSql);String str = null ;try{str = " EXEC sp_attach_db @dbname='"+DataName+"',@filename1='"+strMdf+"',@filename2='"+strLdf+"'";SqlCommand myCommand = new SqlCommand(str, myConn);myConn.Open();myCommand.ExecuteNonQuery();MessageBox.Show("数据库安装成功!点击确定继续");//需Using System.Windows.Forms}catch(Exception e){MessageBox.Show("数据库安装失败!" + e.Message+"\n\n"+"您可以手动附加数据");System.Diagnostics.Process.Start(path);//打开安装目录}finally{myConn.Close();}
}
public override void Install(System.Collections.IDictionary stateSaver)
{string server = this.Context.Parameters["server"];//服务器名称string uid = this.Context.Parameters["user"];//SQlServer用户名string pwd = this.Context.Parameters["pwd"];//密码string path = this.Context.Parameters["targetdir"];//安装目录string strSql = "server=" + server + ";uid=" + uid + ";pwd=" + pwd + ";database=master";//连接数据库字符串string DataName = "JXC";//数据库名string strMdf = path + @"JXC.mdf";//MDF文件路径,这里需注意文件名要与刚添加的数据库文件名一样!string strLdf = path + @"jxc_log.ldf";//LDF文件路径base.Install(stateSaver);this.CreateDataBase(strSql, DataName, strMdf, strLdf, path);//开始创建数据库
} 

转载于:https://www.cnblogs.com/pato/archive/2010/09/16/1828276.html

C# WINFORM 打包数据库相关推荐

  1. c# winform 打包(带数据库安装)

    c# winform 打包(带数据库安装) Posted on 2011-05-14 15:20 宽田 阅读(11102) 评论(30) 编辑 收藏 下边我将用vs中自带的打包程序建立安装包. 关于打 ...

  2. Winform 打包之Setup Wizard

    Winform打包网上找了很久,也尝试了别人各种方式,坑还是比较多的.以下流程自己已经尝试过,是可用的.另外:恶心CSDN某些人很久了,都把自己文章设置收益和VIP可见,本身就没技术含量的文章,还必须 ...

  3. 视频教程-C#WinForm创建数据库方法-C#

    C#WinForm创建数据库方法 二十多年的企业管理软件开发经历,熟知管理软件的整个开发流程,熟练掌握VFP语言,掌握VB语言,了解JAVA.asp.net.CSS.HTML/HTML5等语言,使用C ...

  4. Winform打包工具SetupFactory 9 的使用

    写了个WinForm的小程序..以前没打过包..只是直接把Bin里的东西复制出来使用..自己使用是足够.但是发给别人毕竟不太好看(不牛逼)..所以就想着打包.. Vs2012自带的有打包的功能..相信 ...

  5. Winform 打包 混淆 自动更新

    路径: 最终的解决方案是,ConfuserEx+Installshield+AutoUpdater.NET,ConfuserEx做代码混淆工作,Installshield可以解决注册表的问题,Auto ...

  6. maven 打包数据库加密_漫画:工作这么多年,你居然不知道 Maven中 Optional 和 Exclusions 的区别?...

    Maven 依赖排除(Exclusions) 因为 Maven 构建项目具有依赖可传递的特性,当你在 pom.xml添加某个依赖时,可能也会引入不需要的依赖到你的项目中,这将会会可能引起如下问题: J ...

  7. qt客户端打包_悬赏问答 - QT 类似QQ的 服务器与客户端程序 程序打包+数据库问题...

    这个服务器可不可以移动(从一个电脑到另一个电脑)? 如果可以,那么移动到另一台电脑上时,是不是对这个电脑有要求(比如说数据库)? 写了一个QT的服务器 带有MySql数据库 然后想打包发布出去 但是想 ...

  8. winform与数据库同步更新

    很长时间没写了,不知道要写点什么,上篇中提到过会把游戏的寻路算法贴上,后来因为很长一段时间忙着其他的事情,还没来着及整理(最近就把他贴出来).既然这次的标题是数据库方面的,那就请我们回归正题吧. 在. ...

  9. VS2022/VS2019安装WinForm打包程序,Microsoft Visual Studio Installer Projects 2022下载(网盘下载),Installer Project

    问题:使用VS2022创建WinForm程序,完了需要打包成安装程序,这时候我去下载Microsoft Visual Studio Installer Projects 2022插件,速度超级慢,恶心 ...

最新文章

  1. ELMo:基于上下文的语言模型,5分钟构建语义搜索引擎代码实战
  2. easyui combobox设置只读属性
  3. print输出字体特效
  4. 【LDA学习系列】LDA-Python库
  5. Redis简单动态字符串
  6. linux php 安装mysql数据库_linux php安装mysql数据库有哪些方法
  7. Android开发中解决自定义弹窗获取不到控件对象的问题
  8. excel重复上一步快捷键_13个excel快捷键,让你的1秒钟,抵得上同事的5分钟
  9. 字典序最小问题(贪心)
  10. Android开发笔记(一百一十三)测试工具
  11. Pycharm远程链接矩池云报错踩坑记录
  12. NB-IoT 备胎转正的背后,究竟意味着什么?
  13. 推荐5大开源工具,用于开发Kubernetes项目
  14. DBC文件解析及CAN通信矩阵
  15. MATLAB 中跳出if条件判断
  16. 软技能-代码之外的生存指南读后感 自我营销篇
  17. 狗狗自带餐具能有多可爱
  18. HTML5印章绘制电子签章图片,中文英文椭圆章、中文英文椭圆印章
  19. cm-14.1 Android系统启动过程分析(4)-init进程的启动、rc脚本解析、zygote启动、属性服务
  20. MiniGUI 体系结构之二

热门文章

  1. Dijkstra的算法
  2. IC/FPGA笔试/面试题分析(七)建立时间和保持时间类型考题汇总分析
  3. 远程更新FPGA配置的热启动地址(WBSTAR)的格式?
  4. MATLAB中的三角函数单位问题
  5. 【 C 】高级字符串查找之查找标记(token)函数 strtok介绍
  6. 为什么有的人喜欢看烧脑剧?
  7. AlphaGo制胜绝招:蒙特卡洛树搜索入门指南
  8. SpringBoot实践:更换启动Logo字样
  9. Nginx配置文件粗解
  10. 做项目时用到的linux知识