繁体   English   中英

C#项目-InstallShield,安装后运行时出现MySql错误

[英]C# Project - InstallShield , MySql error when run after installation

我在Visual Studio 2013中创建的C#中有一个项目。我想使用Install Shield free版本创建安装程序。 我创建了一个安装程序并尝试在其他计算机上运行它,但是当我运行它并尝试登录程序时,我遇到了有关mysql数据库的问题。 错误消息是:

Unhandled exception has occured in you application. If you click Continue, the application will ignore this error and attempt to continue. If you click Quit, the application will close immediately.

Cannot connect.

如果我单击“详细信息”按钮,则表示在Mysql上存在一系列错误。 例:

System.Exception: Cannot connect ---> MySql.Data.MySqlClient.MySqlException: Unable to connect to any of the specified MySQL hosts.
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at simulator.ConnConfig.getConnection()

simulator是项目的名称。 ConnConfig是一个类,其中是连接,而getConnection()ConnConfig中的一个函数,该函数返回连接。 II试图在另一台计算机上安装.NET Framework 4.5.2 SQL Server,但也没有成功。 在我的项目中,我使用localhost服务器,其中有一个包含2个表的数据库。 我的问题是,是否有可能将本地数据库添加到安装程序并在另一台计算机上使用它? 哪些可再发行产品需要此操作? 另外,我已经在计算机.NET Framework 4.5上安装了Sql Server 2012 ..,但是当我尝试通过Redistributables将它们添加到InstallShield中时,却一直说Needs to be downloaded 为什么?

更新

我在这堂课上做文章。 但是我收到错误消息: Additional information: Illegal characters in path. 在那一行:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SQLite;

namespace simulator
{
    class ConnConfig
    {
        private static string conn = "Data Source=c:\aplicatie.db;Version=3;Password=myPassword;";
        public static SQLiteConnection connect = null;

        private ConnConfig()
        {

        }
        public static SQLiteConnection getConnection()
        {
            SQLiteConnection connect = null;
            try
            {
                connect = new SQLiteConnection(conn);
                connect.Open();// here I receive the error
                return connect;
            }
            catch (SQLiteException e)
            {
                throw new Exception("Cannot connect", e);
            }
        }
    }
}

更新3

在该课程中,我建立了与数据库的连接。 在其他形式中,我只使用表及其数据。 为了连接程序,我使用了一个登录表单,该表单使用该类的getConnection() 我通过在模拟器项目中添加ADO.NET创建了该数据库。 随之而来的是,我已经在本地主机服务器中拥有的那两个表。 所以,如果我必须用新表创建另一个空数据库,但是在哪里包括该代码或如何使用它,是可以的,因为我不知道该脚本的工作原理。

如果您的数据库要安装在每个客户端上,并且您的表不是很大,那么您可能希望查看类似SQLite的工具,该工具不需要dll的任何安装,并且非常快速高效,并且仅在程序执行时运行。

至于“需要下载的问题”,看来您没有正确设置先决条件,请按照本文中的步骤进行更正, 将InstallShield先决条件,合并模块和对象添加到Basic MSI和InstallScript MSI项目中

您可能需要研究确定MySQL是否适合您。

SQLite vs MySQL vs PostgreSQL:关系数据库管理系统的比较

并查看SQLite的局限性SQLite

老实说,在每个系统上安装MySQL似乎是过大的。 如果您在网络上有一台装有MySQL的服务器,那么可以。 但是在每个系统上似乎都不是一个好主意。

至于连接到SQLite数据库,这里是SQLite 的连接字符串列表

请参阅有关如何创建数据库和表的主题。 创建SQLite数据库和表

我的猜测是您的程序在部署时不会将数据库与设置捆绑在一起。 这可能是由于您没有在项目文件中将数据库标记为数据 文件 尝试此操作,在解决方案资源管理器中右键单击您的项目名称,然后从菜单中选择属性 在水平选项卡中,单击发布选项卡。 在“ 安装模式和设置”下,单击“ 应用程序文件”按钮。 将出现一个对话框,其中包含所有应用程序文件。 从相应单元格的下拉列表中将数据库的“ 发布状态”设置为“ 数据文件 ”。 这样,您的数据库将在发布时与设置捆绑在一起。 希望这可以帮助。

您可以通过ODBC访问SQLite。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM