我正在使用.NET Framework 4.5在Visual Studio 2012中开发应用程序,并使用MDF文件作为本地数据库。这里的问题是在运行时对数据所做的更改不会永久保存。但是,我能够在运行时检索数据甚至将其保存,但它们不会显示在Server Explorer中。我已经将MDF文件的“复制到输出目录”属性设置为“如果更新则复制”,但是问题仍然存在。我该如何解决?
这是我的应用程序的app.config中的连接字符串。我之前尝试过使用单独的数据集.xsd文件,但无济于事。
<connectionStrings> <add name="EA_Logistics_Control.Properties.Settings.LogisticsLocalDBCS" connectionString="Data Source=(LocalDB)\v11.0 AttachDbFilename=|DataDirectory|\LocalDBs\LogisticsLocalDB.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>
有些人可能建议:
但是它们不是实际的解决方案,而只是替代方案。谁能解释一下这是怎么回事?以及我该如何解决?
根据要求,C#代码为:
DateTime dt = DateTime.Now; string CDate = dt.Month + "/" + dt.Day + "/" + dt.Year; int norid = 0, neeid = 0, cfrom = 0, cto=0; SqlConnection SCon = new SqlConnection(ConfigurationManager.ConnectionStrings["EA_Logistics_Control.Properties.Settings.LogisticsLocalDBCS"].ConnectionString); if (SCon.State == ConnectionState.Closed) SCon.Open(); SqlCommand SCom = new SqlCommand("INSERT INTO Consignments VALUES(@CNo, @CDate, @InvoiceNo, @SignorID, @SigneeID, @TravelFrom, @TravelTo, @Packages, @Contents, @VehicleNo, @Rate, @Weight, @Amount, '')", SCon); SCom.Parameters.AddWithValue("CNo", TB_IC_CN.Text); SCom.Parameters.AddWithValue("CDate", CDate); SCom.Parameters.AddWithValue("InvoiceNo", TB_IC_O_Inv.Text); SCom.Parameters.AddWithValue("SignorID", norid); SCom.Parameters.AddWithValue("SigneeID", neeid); SCom.Parameters.AddWithValue("TravelFrom", cfrom); SCom.Parameters.AddWithValue("TravelTo", cto); SCom.Parameters.AddWithValue("Packages", TB_IC_NUM_O_Pkgs.Text); SCom.Parameters.AddWithValue("Contents", TB_IC_Desc.Text); SCom.Parameters.AddWithValue("VehicleNo", TB_IC_O_Veh.Text); SCom.Parameters.AddWithValue("Rate", TB_IC_NUM_O_Rate.Text); SCom.Parameters.AddWithValue("Weight", TB_IC_NUM_O_Wt.Text); SCom.Parameters.AddWithValue("Amount", TB_IC_NUM_Amt.Text); int resRows = SCom.ExecuteNonQuery(); if (resRows > 0) { MessageBox.Show("New entry has been inserted."); }
它的确显示了一个消息框,并且在调试时也看到了受影响的行数。
我在此问题上从@SamiKuhmonen和@BrendanGreen获得了帮助,解决方案是我正在通过服务器资源管理器检查项目文件夹的MDF文件中是否存在数据,我应该做的是检查bin \ Debug中的MDF文件。我的数据是永久的文件夹。我是通过在服务器资源管理器中创建一个新连接以输出MDF文件来实现的。我错误地认为更新的MDF文件将覆盖项目文件夹中的文件,因为它应该是“如果较新则进行复制”的功能。实际上,它会将原始文件复制到bin文件夹,而不是其他方式。很显然,对于全新安装,MDF填充将为空,并且在部署之后,用户端的应用程序将仅引用已部署的文件,即类似于bin \ Debug中的文件。