簡體   English   中英

WPF C#中的mdf數據庫部署問題

[英]mdf database in wpf c# deployment problem

我使用C#創建了WPF應用,對於我的數據庫,我使用了.mdf文件。 當我在計算機上部署應用程序時,它可以完美運行。 但是,當我嘗試在另一台計算機上使用它時,有時會顯示無法打開數據庫。

經過大量的努力來弄清楚這一點之后,當我在那台PC上看到我的數據庫時,我陷入了另一個錯誤。 它說對象引用未設置為對象的實例。

可能是什么問題?

完成后,將其部署並在PC上進行測試,效果很好。

我嘗試在另一台PC上安裝了sqllocaldb ,但沒有成功。

我嘗試安裝SQL Server Management Studio,經過大量研究,我確實設法在其中創建了帶有表和數據的.mdf數據庫文件。 但是我收到一個窗口錯誤,說對象引用未設置為對象的實例。

我的連接字符串:

String connString = "Data Source=(localdb)\\MSSQLLocalDB;Integrated Security=True;database='Autoecole.mdf';Initial Catalog=Autoecole.mdf;Connect Timeout=30;";

我的數據庫文件Autoecole.mdf ,構建操作是內容,“復制到輸出目錄”設置為“如果更新則復制”。

我希望看到串行密鑰等的一些數據,但是我什么也沒得到。

編輯

您好,我嘗試備份數據庫並在遠程PC上還原,然后我嘗試了您告訴我的操作,首先,看起來工作正常,應用程序啟動了數據庫連接,但是當我嘗試在應用程序中使用sql進行其他功能時,說“對象引用未設置為對象的實例”。 該怎么辦

我的app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
      <add name="Autoecole.mdf"
      connectionString="Data Source=(localdb)\MSSQLLocalDB; Integrated Security=True; database='Autoecole.mdf'; Initial Catalog=Autoecole.mdf; Connect Timeout=30"
      providerName="System.Data.SqlClient" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>

而我的connString是:

String connString = System.Configuration.ConfigurationManager.ConnectionStrings["Autoecole.mdf"].ConnectionString.ToString();

再次編輯

使用sql的代碼示例

private void activation_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                textBox.Text = CalculateMD5Hash(GetMacAddress().ToString());
                String mac = textBox.Text.ToString();
                String serial = CalculateMD5Hash(textBox1.Text.ToString());
                String connString = System.Configuration.ConfigurationManager.ConnectionStrings["Autoecole.mdf"].ConnectionString.ToString();
                String query = "update activation set activated='" + 1 + "' where serial='" + serial + "'";
                String query1 = "insert into localadress values('" + mac + "')";
                SqlConnection conn = new SqlConnection(connString);
                SqlCommand command = new SqlCommand(query, conn);
                conn.Open();
                int x = command.ExecuteNonQuery(); 
                if (x >0)
                {
                    MessageBox.Show("Application activé");
                    conn = new SqlConnection(connString);
                    command = new SqlCommand(query1, conn);
                    conn.Open();
                    command.ExecuteNonQuery();
                    MessageBox.Show("Redemmarer l'application");
                }
                else
                {
                    MessageBox.Show("Numero de serie faux, l'application va se fermer");
                }
                System.Windows.Application.Current.Shutdown();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
            finally
            {
                SqlConnection conn = new SqlConnection();
                conn.Close();
            }
        }

首先,一個簡單的解決方案可以確保所有路徑的拼寫都正確無誤。 如果是這樣,請確保已在其他PC上安裝了Microsoft SQL Server 2017或要安裝的任何版本的Microsoft SQL Server。 還要確保在App.config文件中以完全相同的方式聲明連接字符串,或者至少首先在此聲明它。 對您來說,它看起來像這樣:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <connectionStrings>
      <add name="Autoecole.mdf"
      connectionString="Data Source=(localdb)\\MSSQLLocalDB; Integrated Security=True; database='Autoecole.mdf'; Initial Catalog=Autoecole.mdf; Connect Timeout=30"
      providerName="System.Data.SqlClient" />
   </connectionStrings>
</configuration>

如果您已經完成了此操作,則可以使用以下代碼來顯式地向Visual Studio詢問連接字符串的信息:

string con = System.Configuration.ConfigurationManager.ConnectionStrings["Autoecole.mdf"].ConnectionString;

我還閱讀了您可以使用ToString()方法,而不是在代碼末尾訪問ConnectionString屬性,如下所示:

string con = System.Configuration.ConfigurationManager.ConnectionStrings["Autoecole.mdf"].ToString();

我會兩者都嘗試。 希望這對您有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM