系统要实现数据上传,一次上传千百条记录,系统用猫拨号的。我现在用的三层结构,把上传的 insert sql语句连接起来,然后用事务实现这样好不好?
各位大虾给我个意见,有没更好的方法???谢谢

解决方案 »

  1.   

    用文件上传不行吗?把所有记录都用文件打包,比如XML文件或其他可以接收的协议格式
    应用服务器应该可以对文件进行处理的吧,其实很简单
      

  2.   

    为什么很难处理?现在通讯中用XML文件处理的比比皆是,并且容易处理,特别简单
    其实让你传的又不是文件,而是XML文件的内容
    比如:
    <?xml version="1.0" encoding="GBK"?>
    <DATA>
      <RECORD F1="" F2=""...>
      <RECORD F1="" F2=''...>
    </DATA>
    服务器接到到这个串以后,该怎么处理?不是就是解析吗?很难吗?数据解析好了不久可以插入数据了吗?插入数据时用事务处理
    //事务开始
    with TADOQuery.Create(nil) do;
    try
      //装载XML文件内容
      //循环遍历XML节点列表
      begin
        //对当前节点属性操作,把节点对应的字段赋值,插入数据库
        sSQL := 'INSERT INTO yourtable (F1, F2 ...) VALUES (节点属性1(F1), 节点属性2(F2)...)';
      end;
    finally
      Free;
    end;
    //事务结束很容易的
      

  3.   

    楼上的不要激动,你能把中间的用汉字表示的都写全了吗?
       老程序本来数据就是以XML形式存的。现在主要考虑一是要把客户段所有数据必须都传上去,即使出错。就是要么全有要么全没有。该数据要被其他程序统计的,所以要求数据必须十分正确。
      按你这么说我其实只要adoquery.loadfromfile(filename.xml),然后adoquery.post就可以了。但这中间数据格式或其他的东西出错怎么半,我现在就碰到了这个问题。要不我也不会要求就是要么全有要么全没有。 
      我希望能一次把所有的数据全插入,要是出错所有插入记录都回滚,同时效率最高
      

  4.   

    这样还是很简单的,数据库的事务处理本来就是针对批量数据操作而言的,
    不管你是怎么取XML文件中的数据,都是杂存储的操作之前加一个事务开始,结束时提交,中间出错用回滚机制,回滚就是回滚前面的操作,难道有问题吗?否则用事务做什么呢?