簡體   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