如何使用数据库发布我的Windows窗体应用程序

时间:2013-11-18 13:45:11

标签: vb.net visual-studio-2012 crystal-reports

我正在Viusal Studio 2012中使用vb.net和MS Access开发Winform应用程序。 我完成了我的申请,现在我只想发布它。在我的项目解决方案中,我有表单和rpt文件(水晶报告)。我将以下连接字符串用于我的数据库,该字符串未包含在我的项目解决方案中:

     conn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\tblcmplist.mdb"

现在数据库应该在我的应用程序启动的文件夹中。如果我从bin文件夹运行它可以工作,但如果我通过右键单击解决方案发布我的应用程序 - >发布,如果我从发布的位置运行,我收到错误,如数据库文件丢失。

我将我的数据库文件复制到我的应用程序的启动文件夹中仍然发生错误。什么是解决方案PLZ帮助我。

还有一件事我不得不问我在申请中使用水晶报告。我安装了CRforVS_13_0_5开发人员版本,我在visual studio中创建了报告,我可以查看它工作正常的报告。但是,如果我在客户机器中运行应用程序,它会给错误找不到水晶报告等等......我应该在客户端的PC上安装什么来查看报告? Plz帮帮我谢谢....

2 个答案:

答案 0 :(得分:0)

可能有几种方法可以解决问题: 您可以创建一个显示msgBox的测试程序,显示Application.StartupPath,这样您就可以手动检查数据库应该的位置,并查看数据库是否实际位于该位置。

除此之外,你可以像下面这样使用Try Catch:

    Try
        'your database call
    Catch ex As Exception
         MsgBox(ErrorToString & Environment.NewLine & Environment.NewLine & ex.ToString)
    Finally
        conn.Close()
    End Try

我使用ErrorToString导致它易于理解,并提供了问题可能的基本概念,然后我使用Environment.NewLine创建2个新行,为ex.toString创建一些间距,以获取更具体的详细信息在代码中。

如果每次都不停地死胡同,如果不通过代码手动创建数据库文件,还可以检查form_load上是否存在数据库文件。

答案 1 :(得分:0)

您需要在应用程序设置中将数据库部署为“IncludeData”。这将使它出现在ApplicationDeployment.DataDirectory定义的文件夹中(作为ClickOnce应用程序运行)。要从VS和部署中测试这一点,您将需要执行以下操作:

string dataPath;
if (ApplicationDeployment.IsNetworkDeployed)
  dataPath = ApplicationDeployment.CurrentDeployment.DataDirectory;
else
  dataPath = System.Windows.Forms.Application.StartupPath;
dataPath = System.IO.Path.Combine(dataPath, "yourdatabasefilename");
If you deploy it in the Database folder and mark it as Include instead of Include(Data), the datapath would be 
Path.Combine(System.Windows.Forms.Application.StartupPath, "Database\yourdatabasefilename");

如果将其部署为数据,则在发布更新时,它将被向前复制。如果更改它的本地副本,将部署新版本,旧版本将放在名为。\ pre的Data文件夹的子文件夹中。然后,如果您需要迁移数据,则可以。 如果您想要更换数据库的更多粒度,请查看本文,其中介绍了如何在ClickOnce更新之间保留数据: http://robindotnet.wordpress.com/2009/08/19/where-do-i-put-my-data-to-keep-it-safe-from-clickonce-updates/

Source