这样啊,有办法啊,也很easy啦:
下面说做法。
1、在数据库建立一表TMP_UserInfo,结构和UserInfo一样(只有两个字段是吧)
2、将文本文件中的数据全部到表TMP_UserInfo。
3、更新UserInfo表,做法如下:
procedure UpdateUserInfo;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.ADD('UPDATE UserInfo set UserName= (SELECT UserName ');
Query1.SQL.ADD(' FROM TMP_UserInfo WHERE Tele = UserInfo.Tele)');
//注意在加第二行时前面加了个空格。
Query1.SQL.ADD(' WHERE UserInfo.Tele IN(SELECT Tele FROM TMP_UserInfo)');
Query1.ExecSQL;//没有返回结果集,用ExecSQL;
end;
procedure InsertUserInfo;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.ADD('INSERT INTO UserInfo (UserName, Tele) ');
Query1.SQL.ADD(' SELECT UserName, Tele FROM TMP_UserInfo ');
Query1.SQL.ADD(' WHERE TMP_UserInfo.Tele NO In (SELECT Tele FROM UserInfo)');
Query1.ExecSQL;
end;
清除TMP_UserInfo的内容以准备下次任务。
procedure ClearTMP_UserInfo]
begin
//这部份代码不用给了吧,用SQL语句"DELETE FROM TMP_UserInfo"
end
更新部份的SQL语句:
UPDATE UserInfo set UserName= (SELECT UserName FROM TMP_UserInfo WHERE Tele = UserInfo.Tele)
WHERE UserInfo.Tele IN(SELECT Tele FROM TMP_UserInfo)
插入的SQL语句:
INSERT INTO UserInfo (UserName, Tele)
SELECT UserName, Tele FROM TMP_UserInfo
WHERE TMP_UserInfo.Tele NOT In (SELECT Tele FROM UserInfo)
**注意**
在执行这些SQL语句之前请备份好有用的数据,以免意外。
或者另做两个表测试一下,我这里给出的可能有错误,但思路是对的。
上面的SQL语句在Paradox7上测试通过。