[英]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.