关于sql的问题

fstao 2000-03-27 09:25:00
delphi问题:
用MSSQL7建一新表table2,其字段和数据如下:
id name
1 a
2 b

在form1里添加query1、edit1、edit2和button1,query1连接Mssql7。我想实现这样
的功能:假如在edit1和edit2分别输入“3”和“c”,就把这两个数据insert into到table2,
其实这样做比较简单,语句为:
with query1 do
begin
close;
sql.clear;
sql.add('insert into table2(id,name) values(:id,name)');
parambyname('id').AsFloat:=strtofloat(edit1.text);
parambyname('name').AsString:=edit2.text;
execsql;
end;

但是如果在edit1里输入“1”或“2”时,我不想让table2的id重复,那么得在sql语句加入判断句where,
那么where后面又如何写?如:
with query1 do
begin
close;
sql.clear;
sql.add('insert into table2(id,name) values(:id,name)');
sql.add('where ?');
parambyname('id').AsFloat:=strtofloat(edit1.text);
parambyname('name').AsString:=edit2.text;
execsql;
end;
...全文
127 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
haihong 2000-03-28
  • 打赏
  • 举报
回复
where id not in(select id from table2)
supershan 2000-03-28
  • 打赏
  • 举报
回复
我来拿分喽!
在插入之前,先进行判断
with Query1 do
begin
Close;
Sql.Clear;
Sql.Add('select * from table2 where Id=:Id');
parambyname('Id').AsString:=Edit1.Text;
Open;

if Recordcount>0 then
begin
Messagedlg('记录重复!',mtwarning,[mbOK],0);
Exit;
end;
end;
subzero 2000-03-28
  • 打赏
  • 举报
回复
这个是不是太麻烦了
把id设成自动增加的不就行了吗?
Jean 2000-03-28
  • 打赏
  • 举报
回复
...
SQL.Add(
'WHILE NOT EXISTS (SELECT * FROM Table2 WHERE id = :id)
+ ' INSERT INTO Table2 (id, name) '
+ ' VALUES (:id, :name)');
...
bpc 2000-03-28
  • 打赏
  • 举报
回复
where 后边加 table2.id not in (select id form table2)

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧