当前位置: 首页 > 面试题库 >

LocalDB MDF文件属性“如果更新会出现错误”的工作方式

管景天
2023-03-14
问题内容

我正在使用.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>

有些人可能建议:

  1. 使用SQLExpress作为服务器而不是LocalDB或
  2. 尝试以编程方式连接到LocalDB,并将bin \ Debug替换为“ folder_name \ file_name.mdf”

但是它们不是实际的解决方案,而只是替代方案。谁能解释一下这是怎么回事?以及我该如何解决?

根据要求,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中的文件。



 类似资料:
  • Primefaces 6.0。我理解,p:remoteCommand的update属性应该用于指定Ajax应该更新的组件的clientID。我在试着了解PF是如何工作的。它与DataTable结合使用似乎并不像预期的那样工作。当我尝试直接设置时,它没有任何影响。但是,执行此操作(在下面的代码中注释掉)将强制PF更新指定的OutputText。 为什么会出现这种情况?我会为技术解释感到高兴--我正试

  • 问题内容: 跑步 抛出一个。这是为什么?我可以想象一个或某种形式的,但是为什么会出现属性错误? 问题答案: 的结果是Python长。numpy无法将其转换为其数字类型之一,因此将其保留为。一元函数对对象数组的工作方式是,它们只是尝试在对象上调用相同名称的方法。例如 由于Python上没有方法,因此您可以得到。

  • 问题内容: 尽管允许读取和写入属性文件,但写入并不会保留格式。并不奇怪,因为它没有绑定到属性文件。 是否有一个类(或某些类)可以保留注释和空白行并在适当位置更新属性值? 问题答案: 它并没有比Apache的Commons Configuration API 更好。这提供了从属性文件,XML,JNDI,JDBC数据源等进行配置的统一方法。 它对属性文件的处理非常好。它允许您从属性中生成一个Prope

  • 我使用Spring Data Neo4j 4 GraphRepository来保存和检索数据。使用GraphRepository保存()和findAll()方法。 当我将现有实体属性更新为null时,所做的更改似乎不会反映在返回的数据中。 如果将属性更新为任何其他非空值,则更改将正确反映。 我可以看到null属性更新是在DB服务器上执行的。但是findAll()方法不反映更改并保留旧值。 这是已知

  • Hi Iam试图在MyBATIS中执行更新操作,但Iam得到SQL语法错误异常,我不明白我做错了什么地方有人建议我

  • 问题内容: 我正在NHibernate中对单个属性执行标准更新。但是,在提交事务时,sql更新似乎设置了我映射到表上的所有字段,即使它们没有更改。当然这不是Nhibernate中的正常行为吗?难道我做错了什么?谢谢 问题答案: 这是正常现象。您可以尝试添加到类定义中以覆盖此行为。