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

大Y 2011-06-30 03:00:24

 如题:
   
    只想知道怎么去将Sqlserver数据库打包里面,是将mdf,和ldf文件直接打包里面;
    还是将生成的SQL不管那一种方式吧,都得有个测试的过程,及配置,怎么和程序发布紧密的结合起来呢?



    求正确的路子,别给我指出 baidu google一大串的url,看过了!


c# winform 打包(带数据库安装) 求正解.

怎么一发布一配置程序就能够运行了!!!!
...全文
321 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大Y 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 o7110650504 的回复:]

关注中...
[/Quote]

搞定了,给你说一声
大Y 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fengyarongaa 的回复:]

自定义安装方式 配置数据库在客户端
[/Quote]

可以具体点吗?>
大Y 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 samyou 的回复:]

用安装程序啊
[/Quote]

能具体点吗?
to_Boyka 2011-07-01
  • 打赏
  • 举报
回复
关注中...
ycproc 2011-07-01
  • 打赏
  • 举报
回复
自定义安装方式 配置数据库在客户端
samyou 2011-07-01
  • 打赏
  • 举报
回复
用安装程序啊
大Y 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dafei198607 的回复:]

把数据库两个文件项目下,打包的时候把数据库指向放在项目的安装目录下,用语句控制数据库附加,如果是二次安装,可先将数据库用语句分离,再次添加,看你的逻辑是怎么安排的,贴上部分代码,看是否有帮助
C# code


string dbname = "数据库名";
string filename1 = Application.StartupPath + "\\Oc……
[/Quote]

这法有点独特,不知道怎么用code加到数据库上呢?


大Y 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 hongleidy5000 的回复:]
如题:

只想知道怎么去将Sqlserver数据库打包里面,是将mdf,和ldf文件直接打包里面;
还是将生成的SQL不管那一种方式吧,都得有个测试的过程,及配置,怎么和程序发布紧密的结合起来呢?



求正确的路子,别给我指出 baidu google一大串的url,看过了!


c# winform 打包(带数据库安装) 求正解.

怎么……
[/Quote]


我试试撒,谢谢了

dafei198607 2011-06-30
  • 打赏
  • 举报
回复
把数据库两个文件项目下,打包的时候把数据库指向放在项目的安装目录下,用语句控制数据库附加,如果是二次安装,可先将数据库用语句分离,再次添加,看你的逻辑是怎么安排的,贴上部分代码,看是否有帮助


string dbname = "数据库名";
string filename1 = Application.StartupPath + "\\OceanSampleDBTemp\\OceanSampleDB.mdf";
string filename2 = Application.StartupPath + "\\OceanSampleDBTemp\\OceanSampleDB_log.ldf";
string OldDBPath = "";
string backupFilePath = "";
string backupFilePathLDF = "";
try
{
string dirDBPath = Application.StartupPath + "\\DBBackup_" + DateTime.Now.ToShortDateString()+"_"+DateTime.Now.ToShortTimeString().Replace(":","-")+"-"+DateTime.Now.Second.ToString();
DirectoryInfo diTemp = new DirectoryInfo(dirDBPath);
if (!(diTemp.Exists))
diTemp.Create();

backupFilePath = diTemp.ToString() + filename1.Substring(filename1.LastIndexOf("\\"));
//创建两个文件流 一个是源文件相关,另一个是要写入的文件
FileStream fs = new FileStream(filename1, FileMode.Open);
FileStream fs2 = new FileStream(backupFilePath, FileMode.Create);
byte[] data = new byte[1024];
//创建两个缓冲流,与两个文件流相关联
BufferedStream bs = new BufferedStream(fs);
BufferedStream bs2 = new BufferedStream(fs2);
//fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
//好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
//即-->那个人没有苹果往篮子里面放了
while (fs.Read(data, 0, data.Length) > 0)
{
fs2.Write(data, 0, data.Length);
fs2.Flush();
}
//关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
fs.Close();
fs2.Close();

//复制数据库日志文件)
//string OldDBPathLDF = OldDBPath.Substring(0, OldDBPath.LastIndexOf(".")) + "_log.ldf";
backupFilePathLDF = diTemp.ToString() + filename2.Substring(filename2.LastIndexOf("\\"));
//创建两个文件流 一个是源文件相关,另一个是要写入的文件
FileStream fsLdf = new FileStream(filename2, FileMode.Open);
FileStream fs2Ldf = new FileStream(backupFilePathLDF, FileMode.Create);
byte[] dataLdf = new byte[1024];
//创建两个缓冲流,与两个文件流相关联
BufferedStream bsLdf = new BufferedStream(fsLdf);
BufferedStream bs2Ldf = new BufferedStream(fs2Ldf);
//fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
//好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
//即-->那个人没有苹果往篮子里面放了
while (fsLdf.Read(dataLdf, 0, dataLdf.Length) > 0)
{
fs2Ldf.Write(dataLdf, 0, dataLdf.Length);
fs2Ldf.Flush();
}
//关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
fsLdf.Close();
fs2Ldf.Close();
SoaringSnake 2011-06-30
  • 打赏
  • 举报
回复
要把数据库以及一些初始数据生成T-SQL代码的,然后将生成数据库的的文件部署到应用程序文件夹下,然后在重载的Install方法里加入生成数据库代码(注意:生成数据库的代码应该在调用基类的Install方法后)。
数据库的卸载:首先删除数据库,再调用基类的Uninstall方法删除应用程序文件夹里的文件(顺序不能乱)。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧