【问题标题】:How to copy data from one sqlite database to another sqlite database in wpf?如何将数据从一个 sqlite 数据库复制到 wpf 中的另一个 sqlite 数据库?
【发布时间】:2019-03-20 17:16:23
【问题描述】:

我有 2 个数据库 PosOrderPayment 和另一个 TempPosOrderPayment 都有同一个表 Orders 具有相同的属性和列。问题是我想从TempPosOrderPayment 获取所有数据并将其保存到PosOrderPayment。我想在业务层(OrderBo)做代码。我想避免重新插入数据,这就是为什么我想从其他数据库中的其他表中检索和复制数据和行,因为这两个东西将从 2 个不同的应用程序中插入。

现在我有这样的东西

// 这在我的支付应用程序中

    public void InsertOrder(Order order)
    {
        try
        {               
         using (PosOrderPaymentDBContext db = new PosOrderPaymentDBContext())
            {
                db.Orders.Add(order);
                db.SaveChanges();
            }

      }
        catch (Exception ex)
        {
             CustomExceptionHandling customExceptionHandling = new CustomExceptionHandling();
            customExceptionHandling.CustomExHandling(ex.ToString());
        }
    }

//这是我的收银员应用程序

 public void InsertOrder(Order order)
    {
        try
        {        
         using (tempPosOrderPaymentDBContext db = new tempPosOrderPaymentDBContext())
            {
                db.Orders.Add(order);
                db.SaveChanges();
            }
 }
        catch (Exception ex)
        {
             CustomExceptionHandling customExceptionHandling = new CustomExceptionHandling();
            customExceptionHandling.CustomExHandling(ex.ToString());
        }
    }

有办法吗?

场景是这样的 当用户在收银应用程序中单击按钮Pay 时,它将把表Orders 中的所有数据保存在TempPosOrderPayment 数据库中,然后它会转到支付应用程序。当用户在支付应用程序中单击按钮Payment 时,它将复制TempPosOrderPayment 内部表Orders 中的所有数据并将其保存到Orders 内部PosOrderPayment 数据库中的表Orders

付款完成后,TempPosOrderPayment 数据库中的表Orders 将为空。并且每次用户运行应用程序时都会重复此插入复制删除

【问题讨论】:

  • @Avinash 你能举个例子吗。抱歉,我是新手 :)
  • 因为这是 SQLite,也许你可以复制你的 db 文件?
  • @vasily.sib 感谢您的意见。它使用代码来复制数据库文件。如果可能的话,我需要一些需要代码的东西,因为每次用户运行应用程序时都会使用此复制数据。

标签: c# wpf sqlite


【解决方案1】:

如果我正确理解您的问题,您首先在 Cashier 应用程序中捕获客户的订单并将其保存在数据库 1 (TempPosOrderPayment) 中,然后确认付款,然后将 Payment 应用程序中的此订单复制到另一个数据库 (PosOrderPayment)。

假设您必须使用两个独立的数据库,那么上面的场景看起来是合理的,尽管容易出错 - 如果您在将记录复制到 TempPosOrderPayment 后忘记从 TempPosOrderPayment 删除记录怎么办?

如果您只能在一个数据库中工作,您可以使用一些状态字段来指示订单的业务状态(已接收、已确认、已付款...),还可以使用事务来确保您的数据保持一致。

【讨论】:

  • 嗨,托马斯。是的,你正确地理解了我。但不幸的是,由于某种原因,我需要在 2 个数据库上工作。但没关系,我找到了我想要的方式。谢谢你的帮助:)
猜你喜欢
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多