sql语句查询输入问题(50分)

  • 主题发起人 主题发起人 dql_77
  • 开始时间 开始时间
D

dql_77

Unregistered / Unconfirmed
GUEST, unregistred user!
各位老师你好,我请教一问题,就是插入数据问题,我在表1中有id、name等字段,
我用sql写一段语句,就是实现检查id号有没有重复,如没有重复就插入数据,
如重复就插入提示失败,重新输入id号,我写了一段代码,老是出错,
请问如何写这段代码比较简单,谢谢!
 
什么错误? 把代码贴出来
 
给你个例子吧:
AdoDataset1.Close;
Adodataset1.CommandText:='select * from table where id=idvalue';
AdoDataset1.Open;
if not AdoDataset1.isEmpty then
插入数据
else 提示失败
 
如果是主键两种方法:
1、直接插入,报主建重复错
2、先查询,如无纪录再插入
两种方法各有各的好处
 
把ID设成自动增长,就不用去检查它了。
如果数据库是sql server 或Oracle 可以使用存储过程。
 
可能是设置了自动增长的缘故吧,否则可以先查询,再进行插入。
 
1、SQL语句里面有没有数据类型的问题
2、EXCEL记录里面有没有数据库的保留字
3、用一个showmessage看看到底哪条记录出错了??
 
ID完全可以定义成关键字啊,产生一个不重复的ID 有很多种方法,可以用GUID,可以用存储过程ID
也可以设成自增类型,这样ID的就不用用户输入,而由程序或数据库系统产生,这样就不会出现这种
情况啦.
 
Query1.SQL.Clear;
Query1.SQL.Add('SELECT COUNT(*) FROM table ');
Query1.SQL.Add('WHERE '+id+'='''+idvalue+'''');
Query1.Close;
Query1.Open;
if Query1.Fields[0].AsInteger>0 then
插入数据
else 提示失败
 
建一个表
id_name 字符串
id_Number 数字

在数据库中写一个函数,每增加一条数据
id_Number = id_Number + 1

FieldByName('id_Number').AsInteger := id_Number;
 
你还要考虑删除后的情况,我想你在程序删除部分数据后还得重写这个id字段
否则你的这个id必须是long类型,就让他不停的涨,但总有一天会溢出的。
我看还不如让这个字段是自增加的
 
给你个例子吧:
AdoDataset1.Close;
Adodataset1.CommandText:='select * from table where id=:idvalue';
Adodataset1.Parambyname('idvalue').asstring:=idvalue;//idvalue 为对应的string
//类型的变量名
AdoDataset1.Open;
if not AdoDataset1.isEmpty then
插入数据
else 提示失败
 
后退
顶部