Я не понимаю, зачем вам нужно использовать несколько 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, тогда в поле autoin c int есть (но необязательно, вы всегда можете иметь собственную функцию getNextId, как в примере).