当前,系统正在创建多个OledbConnections,并且该过程需要很长时间才能完成,总结如下:
C#代码:
[所有这些插入都会为每个人创建一个新的OledbConnection,例如3k人,这会花费太长时间。
如果我不必处理ID会更容易,但是我没有找到一种使用VFP的好方法。
这是批量插入或提高性能的方法吗?
如果表2中的id是自动编号:
if exists(select * from table2 where id = idtable1)
insert into table2(field1,field2...
else
insert into table2(ID,field1,field2...
我不明白为什么您需要为此使用多个OleDbConnections。单个连接即可:
string sql = @"insert into tableB (id, f1, f2, f3)
select getNextId('tableB'), f1, f2, f3
from tableA
where exists (select * from tableA where tableA.id = tableB.id)";
using (OleDbConnection cn = new OleDbConnection(@"Provider=VFPOLEDB;Data Source=c:\MyDataFolder"))
using (OleDbCommand cmd = new OleDbCommand(sql, cn))
{
cn.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = @"insert into tableB (id, f1, f2, f3)
select id, f1, f2, f3
from tableA
where not exists (select * from tableA where tableA.id = tableB.id)";
cmd.ExecuteNonQuery();
cn.Close();
}
使用的SQL可能不正确,因为从您的定义来看,您实际上并不确定要做什么。
而且顺便说一句,您没有在说什么版本,如果Foxpro表表示VFP表,则有autoinc int字段(但不一定要像示例中一样始终具有自己的getNextId函数)。