我想在Delphi的SQL中插入一个新的学生的信息,如下:
with Query3 do
begin
Close;
SQL.Clear;
SQL.ADD('insert into 学生(学号,学生姓名,所属系名,学生年龄) values (:Field1,:Field2,:Field3,:Field4)');
ParambyName('Field1').asstring:=Trim(Edit2.Text);
ParamByName('Field2').AsString:=Trim(Edit3.Text);
ParamByName('Field3').AsString:=Trim(Edit4.Text);
ParamByName('Field4').asstring:=Trim(Edit5.Text);
ExecSql;
end;
我执行了一下,老是出现错误:invalid use of keyword
Token: values
到底是为什么啊?我查网上一些人他们插入也是用同样的方法的,都说可以。..
with Query3 do
begin
Close;
SQL.Clear;
SQL.ADD('insert into 学生(学号,学生姓名,所属系名,学生年龄) values (:Field1,:Field2,:Field3,:Field4)');
ParambyName('Field1').asstring:=Trim(Edit2.Text);
ParamByName('Field2').AsString:=Trim(Edit3.Text);
ParamByName('Field3').AsString:=Trim(Edit4.Text);
ParamByName('Field4').asstring:=Trim(Edit5.Text);
ExecSql;
end;
我执行了一下,老是出现错误:invalid use of keyword
Token: values
到底是为什么啊?我查网上一些人他们插入也是用同样的方法的,都说可以。..
解决方案 »
- 又出错了,怎么做转换啊![DCC Error] download.dpr(19): E2003 Undeclared identifier: 'HKEY_LOCAL_MACHINE'
- 如何将坐标转化为实际坐标
- 在创建多层分布式系统的客户端时,提示‘拒绝访问’
- 服务程序注册的问题?急···在线等待
- 救命!!如何禁止dbgrid中的PickList列不能录入,只能选择呀???
- 菜鸟问题:LoadFromFilme 后必须是什么才能装入图象(d:\fie.jpg)不行?谢谢!
- 在Delphi中,那种数据库组件效率最好?ADO,BDE,DBX或其它组件?
- c/s开发时的问题?
- 如何检测是否连接了internet?
- 目前delphi能实现的多层分布式系统的结构是什么样的?
- fastreport中这样的分栏分组效果怎么做
- 如何让子窗体显示在主窗体右侧,左侧是一个TreeView动态生成数据库里数据?
将上面的语句放到查询分析器中执行下,看是否有错误?
begin
Close;
SQL.Clear;
SQL.ADD('insert into 学生(学号,学生姓名,所属系名,学生年龄) values(:Field1,:Field2,:Field3,:Field4)');
ParambyName('Field1').asstring:=Trim(Edit2.Text);
ParamByName('Field2').AsString:=Trim(Edit3.Text);
ParamByName('Field3').AsString:=Trim(Edit4.Text);
ParamByName('Field4').asstring:=Trim(Edit5.Text);
ExecSql;
end;
之后还是显示:
invalid use of keyword
Token: values
这样看来应该是本来的查询语句就出问题了.
我定义的学号,学生姓名,所属系名都是alpha,所属系名是短整型。
----------------------
SQL.ADD('insert into 学生(学号,学生姓名,所属系名,学生年龄) values ('''+Edit1.text+''',******* )'); //ok
insert into 学生(学号,学生姓名,所属系名,学生年龄) values (…… )里面,因为在查询分析器里面也会出错。
至于 values ('''+Edit1.text+''',******* )');
还是values(:Field1,:Field2,:Field3,:Field4)');
ParambyName('Field1').asstring:=Trim(Edit2.Text);
ParamByName('Field2').AsString:=Trim(Edit3.Text);
ParamByName('Field3').AsString:=Trim(Edit4.Text);
ParamByName('Field4').asstring:=Trim(Edit5.Text);
我觉得只是写法不同而已,应该没什么区别的吧.
-------------------------晕,这个都会错,怎么可能
1:查询分析器里面
insert into 学生(学号,学生姓名,所属系名,学生年龄)values ('1','1','1','1' );//标准写法
2:delphi里面
AdoQuery1.***
AdoQuery1.SQL.ADD('insertinto 学生(学号,学生姓名,所属系名,学生年龄)values ('''+Edit1.text+''',''1'',''1'',''1'' )'); //标准写法
AdoQuery1.****
--如果你真的能理解我的写法,我保证没有错误,