系统要实现数据上传,一次上传千百条记录,系统用猫拨号的。我现在用的三层结构,把上传的 insert sql语句连接起来,然后用事务实现这样好不好?
各位大虾给我个意见,有没更好的方法???谢谢
各位大虾给我个意见,有没更好的方法???谢谢
解决方案 »
- Undeclared identifier: 'IWForm2'?
- 在Delphi中如何读取Oracle中函数的返回值?
- 关于各种语言优势比较很权威的文章
- 关于Ttcpserver、Ttcpclient或者Tserversocket、Tclientsockt的请教
- 怎样读取另一个Delphi程序中的TStringGrid中的数据?
- 在写程序时,如何用组合键快速查看某个函数的参数信息?或者某个窗体的方法、属性。。
- 如何调整ListView的每一行高度。
- delphi 或者VFP 如何实现树状结构移动功能?
- 又到了年底,是不是又有打算另谋高就的想法呢?
- 关于构造与析构方法
- 关于html解析的问题,大家都有什么方法?
- Dbgride的问题
应用服务器应该可以对文件进行处理的吧,其实很简单
其实让你传的又不是文件,而是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;
//事务结束很容易的
老程序本来数据就是以XML形式存的。现在主要考虑一是要把客户段所有数据必须都传上去,即使出错。就是要么全有要么全没有。该数据要被其他程序统计的,所以要求数据必须十分正确。
按你这么说我其实只要adoquery.loadfromfile(filename.xml),然后adoquery.post就可以了。但这中间数据格式或其他的东西出错怎么半,我现在就碰到了这个问题。要不我也不会要求就是要么全有要么全没有。
我希望能一次把所有的数据全插入,要是出错所有插入记录都回滚,同时效率最高
不管你是怎么取XML文件中的数据,都是杂存储的操作之前加一个事务开始,结束时提交,中间出错用回滚机制,回滚就是回滚前面的操作,难道有问题吗?否则用事务做什么呢?