2011-06-21 66 views
1

我将首先解释我所做的事情,然后指出问题出在哪里。在同一张表中同时进行多个插入操作

我的应用程序从认证用户获得XML file通过(文件上传),然后我映射(我的意思是迁移)存储在XML文件中的数据到我的数据库中的等效数据。 我通过LINQ从XML文件中获取数据。

  • 我的第一个问题

    在 XML文件在我的数据库等同实体 每个元素。什么是最好的 更高性能的方式插入 多于一个记录在 特定的表,并保证如果 有错误的数据,回滚整个操作? 有没有这方面的一些例子 ?你对 验证XML数据有什么建议吗?

  • 我的第二个问题:

    在第一个问题,我谈谈 的(INSERT)操作。如果 用户更改了XML 文件中的某些数据,那么我想用新数据更新我的 数据库。我应该如何 这样做?我应该比较每个 记录,或尝试插入,如果失败,请更新此记录?

+0

何必下投票,如果你不明白的问题,我将更多地解释 –

+0

我没有downvote,但它可能来自一个事实,即你”在这里再问两个无关的问题。将它们分解成单个问题会更好,因为答案与答案无关。 –

+0

是的,但我面临同样的应用程序中的两个问题,我想解释整个问题..嗯,没关系 –

回答

3

XML文件中的每个元素都在我的数据库的 相当于实体。什么 是最好的,如果有 一些事情出错了数据多表现方式 插入在 特定表中的多个记录。而保证, 回滚整个操作。请 如果有一些样品做this.and 有关验证 XML数据的任何建议。

这里的简单答案是:使用一个事务。事务处理的目的是为您提供一种机制,您可以执行多个命令,然后将它们作为单个工作单元提交或完全回滚,以便数据库处于一种状态,就好像您的操作从未发生过一样。

在第一个我谈的 (INSERT)操作

,如果用户改变 XML文件中的一些数据,那么我想 与新 data.how更新我的数据库,以O此。我应该比较 每条记录​​。或尝试插入,如果失败 然后更新此记录?

如果可以很容易地避免try-error-different重试模式不是一个理想的模式。您的SQL应使用旨在有条件地插入或更新的语句,具体取决于现有数据(例如SQL Server MERGE命令;我没有Informix体验,所以我不能说它支持什么或者MERGE是ANSI SQL),或者你应该在SQL中自己完成这个条件逻辑。

+0

非常感谢,我想到了交易,但我不知道每次插入操作的次数。这个怎么做。 –

+1

@just_name:这不是问题。您可以在事务中执行尽可能多的操作。你开始交易,执行你的命令(无论有多少),然后提交或回滚事务。 –

+0

嗯,谢谢,这不是问题,我想如何使一个交易方法如此广泛地在我的应用程序中使用..每次我不知道有多少记录我将插入每个实体。因此,我需要一个方法插入多个记录与此保证。写一个并使用许多。 –

1

为此使用informix存储过程。 这将允许您包含处理不良数据的异常处理。

然后,您可以先将所有实体加载到临时表中,如t_work,如果存在数据问题,则删除表并提出一个消息。

BEGIN -- Start Exception Handling 
    ON EXCEPTION SET esql, eisam 

    DROP TABLE t_work; 
    RAISE EXCEPTION esql, eisam; -- rethrow the exception 
    END EXCEPTION 

    -- << Your logic here>> 

在这里看到更多的细节:http://www.pacs.tju.edu/informix/answers/english/docs/dbdk/infoshelf/sqlt/14.toc.html#540217

相关问题