TQuery的SQL查询问题……各位富翁们都来帮偶看看哪儿错了嗄! (100分)

  • 主题发起人 主题发起人 etu5
  • 开始时间 开始时间
E

etu5

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
stitle:string;
sparent:string;
sbparent:string;
sindexnum:integer;
slevel:integer;
tmpNode:TtreeNode;
baseNode:TtreeNode;
begin
tmpNode:=TreeView1.Items.Add(Treeview1.Selected,Edit1.Text);
if tmpNode<>nil then
begin
stitle:=tmpNode.Text;
slevel:=tmpNode.Level;
sindexnum:=tmpNode.Index;
if tmpNode.Parent<> nil then
begin
sparent:=tmpNode.Parent.Text;
while tmpNode.Parent<>nil Do
begin
tmpNode:=tmpNode.Parent;
end;
sbparent:=tmpNode.Text;
end;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Insert into data(title,indexnum,level,parent,baseparent)');
Query1.SQL.Add('Values(:stitle1,:sindexnum1,:slevel1,:sparent1,:sbparent1)');
Query1.Unprepare;
Query1.ParamByName('stitle1').AsString:=stitle;
Query1.ParamByName('sindexnum1').AsInteger:=sindexnum;
Query1.ParamByName('slevel1').AsInteger:=slevel;
Query1.ParamByName('sparent1').AsString:=sparent;
Query1.ParamByName('sbparent1').AsString:=sbparent;
Query1.Prepare;
Query1.ExecSQL;
end;
end;

{
数据库表是data.db
列元素分别为:
title //alpha类型
indexnum //number类型
level //number类型
parent //alpha类型
baseparent //alpha类型
}
上面的代码哪里错了嗄?该怎么改嗄??高手指点!!
偶已经郁闷很久了……每次都是SQL查询弄半天……偶按照SQL标准语句写了嗄?为什么Delphi总是提示错误呢?
错误提示如下:
Project Project1.exe raised exception class EDBEngineError with message 'Invalid use of keyword.'
Token:level,parent,baseparent)
Values(?,?,?,?,?)
Line Number:1'. Process stopped. Use Step or Run to continue.

大伙把这段过程运行试一试,看能运行否?
答对分全给!!!!
 
可能 level parent 之类的和关键字冲突。
 
就是说偶的代码没有错误是吧?

可是会有什么冲突呢? 这会和什么冲突嗄?
 
和sql中的关键字冲突呀,(level,parent)已经给你指出了!
 
把 level parent 两个字段去掉试试看。
 
level,parent,baseparent
 
直接将值转化代到SQL里
如果是SQLSERVER 的话到查询分析器里试试通不能过,别的数据库的类推,看是哪里出问题

这样就比较清楚的知道是哪里出错了
[:D][:D]
 
偶根据各位的意见在数据库表data.db中把Level改成了Tlevel,又有一个错误提示:
Type mismatch in exception (类型和表达式不匹配?)

于是再把data.db改成:
{
列元素:
title //alpha类型
indexnum //Short类型 原来是number类型
level //Short类型 原来是number类型
parent //alpha类型
baseparent //alpha类型
}

可是上面的"Type mismatch in exception "还是出现。。。

大侠教偶嗄~~~~~~~~~~
 
你先在 sql explorer 中执行一下具体的 Sql 语句,
通了再到程序中写。
 
sql语句没错,但你是否设置了QUERY.DateBaseName 属性,我试了,若不设的话与你说的情况
一旨.
 
已经好了 是偶的问题:把那个AsInteger改成AsShortint就可以了:)
 
谢谢各位无私的帮助~ 每人都有分!:)
 
后退
顶部