我在做数据库迁移的时候因为特殊的原因要按列向一个空表中插入数据,但是插入完第一列之后有问题了,所以我想用update第一列之后的列。希望能提供代码!~重要是思路方法!部分代码如下:
for i:=1 to adoquery1.RecordCount do //根据节点内容循环迁移数据
begin
col:=adoquery1.fieldbyname(v2).AsString;
if j=0 then //判断变量j来决定insert/update
begin
with adoquery2 do
begin
sql.Clear;
sql.Add('insert into '+v3+'('+v4+')');
sql.Add('values(:col)');
parameters.ParamByName('col').Value:=col;
prepared:=true;
execsql;
end;
adoquery1.Next;
end
else
begin
with adoquery2 do //update记录
begin
sql.Clear;
sql.Add('update '+v3);
sql.Add('set '+v4+'=:col');
parameters.ParamByName('col').Value:=col;
prepared:=true;
execsql;
end;
adoquery1.Next;
end;
end;这样update的值都是源表的最后一条记录的值,真郁闷。怎么改都不对!
for i:=1 to adoquery1.RecordCount do //根据节点内容循环迁移数据
begin
col:=adoquery1.fieldbyname(v2).AsString;
if j=0 then //判断变量j来决定insert/update
begin
with adoquery2 do
begin
sql.Clear;
sql.Add('insert into '+v3+'('+v4+')');
sql.Add('values(:col)');
parameters.ParamByName('col').Value:=col;
prepared:=true;
execsql;
end;
adoquery1.Next;
end
else
begin
with adoquery2 do //update记录
begin
sql.Clear;
sql.Add('update '+v3);
sql.Add('set '+v4+'=:col');
parameters.ParamByName('col').Value:=col;
prepared:=true;
execsql;
end;
adoquery1.Next;
end;
end;这样update的值都是源表的最后一条记录的值,真郁闷。怎么改都不对!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货