【问题标题】:TableAdapter Insert not persisting dataTableAdapter 插入不持久数据
【发布时间】:2013-11-09 06:44:55
【问题描述】:

我通过 Visual Studio 2013 Express 版本创建了一个基于服务的本地数据库。连接字符串、数据集和 TableAdapter 是自动添加的。

单击按钮时,我试图通过调用 TableAdapter.Insert 插入一些数据 因为我已经有一个 dataGridView 的数据源绑定到数据集,所以我立即看到数据在运行时正确插入到表中,但是当我关闭应用程序时,实际的数据库不包含数据。因此,数据实际上并没有插入到数据库中。

根据http://msdn.microsoft.com/en-us/library/ms233812%28v=vs.110%29.aspx

使用插入,您只需调用插入,但我在表上调用 Update 和 AcceptChanges,为了安全起见,我尝试了链接中显示的第一种方法(即创建一行并将其添加到数据集,然后调用更新)为好吧,但似乎数据根本没有被插入到数据库中。

最后插入代码,rds是DataSet,ta是TableAdapter

private void AddBtn_Click(object sender, EventArgs e)
{
     ta.Insert("foo", "bar", 2, "zing", "tada");
     ta.Fill(rds.reminders);
     rds.reminders.AcceptChanges();
     ta.Update(rds.reminders);  
}

【问题讨论】:

  • 看起来你插入了一条记录,然后通过调用 Fill 覆盖它(虽然很长时间没有使用适配器)。注释第二行时是否有效?
  • 它不会覆盖数据,而是如果我注释填充,我什至看不到 dataGridView 对运行时的影响。因此,它在被评论时不起作用。
  • 如果您执行 Insert 然后 AcceptChanges,它向数据库插入一条新记录(因为 InsertCommand 已定义)。可能的 GridView 没有反映更改,需要更新它或其他什么。

标签: c# sql-server-2012 tableadapter localdb


【解决方案1】:

事实证明,由于每次覆盖 mdf 数据库时我都使用 VS 编译的应用程序,因此我所做的更改被完全删除,

可能的解决方案可能是以下之一

1)将连接字符串更改为指向Debug文件夹中的数据库,每次编译和运行应用程序时都不会被覆盖

2)您可以简单地让连接字符串保持原样,然后通过分离编译器模式对其进行测试。

由于我在 2 天后突然发现的以下 stackoverflow 链接,我能够弄清楚这一点。

Database changes do not persist after ObjectContext.SaveChanges() is called

【讨论】:

    【解决方案2】:

    ClearBeforeFill 属性
    http://msdn.microsoft.com/en-us/library/bz9tthwx.aspx

    "默认情况下,每次执行查询来填充一个 TableAdapter 的 数据表,数据清空,只查询结果 加载到表中。”

    【讨论】:

    • 设置 ta.ClearBeforeFill = false;在插入之前,具有相同的效果,没有任何改变。尽管我在您发布的链接上看到我必须将其设置为 false
    • 然后查看真实的数据库数据。
    • 正如我在问题中提到的,真实的数据库数据保持不变,此代码在单击按钮时执行,结果仅在运行时,即在运行时可以看到插入的数据,但是,它没有持久化,或者更确切地说,由于“某些”原因它没有被提交到数据库。
    • 1.是否有任何明确的父事务? 2. 连接字符串是否正确? 3. InsertCommand 正确吗?
    • 1.没有父事务,这是唯一的“查询”我什至还没有开始创建真正的应用程序,只是确保数据库正常工作。 2.作为数据库,通过VS添加Dataset和TableAdapter,VS在App.Config中创建并写入连接字符串。另外,我可以在dataGridView中查看数据库中的数据,这不意味着连接有效吗? 3.嗯,关于InsertCommand,我用的是TableAdapter预先创建的Insert方法,我没有写任何insert命令,虽然Insert方法要求的参数很完美。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    相关资源
    最近更新 更多