我现在在做毕业设计,遇到了一个问题,求高人指教,我先在BDE里面自己建了一个database bobo,里面有一张Tuser的表,我界面上有一个query和datasource,DBgrid三个组件,可以对表Tuser进行插入 删除 更新操作可是我把建的database删了,在sql server 2000里面建了一个bobo的数据库,用ODBC连接上的时候,database也能显示出来同样是bobo。可是我只能做插入操作,不能删除或者更新,不然就报错,插入的时候是正常的,竟然会遇到这样的问题,求高手啊!!错误是这样的:invalid field name [microsoft][ODBC SQL server Driver][SQL server]列名'as'无效这是我插入键的代码:
begin
with query1 do
begin
close;
sql.Clear;
sql.Add('insert into Tuser values (:id,:psd)');
params[0].AsString:='as';
params[1].AsString:='as';
execsql;
close;
end;
showmessage('保存成功!'); begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from Tuser');
Query1.open;
end;
end;这个是我删除键的代码:
var
s:string;
s0:string;
begin
s0:='"';
s:='delete from Tuser where id='+s0+'as'+s0 ;
with query1 do
begin
close;
sql.Clear;
SQL.Add(s);
execsql;
close;
end; begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from Tuser');
Query1.open;
end;
end;
begin
with query1 do
begin
close;
sql.Clear;
sql.Add('insert into Tuser values (:id,:psd)');
params[0].AsString:='as';
params[1].AsString:='as';
execsql;
close;
end;
showmessage('保存成功!'); begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from Tuser');
Query1.open;
end;
end;这个是我删除键的代码:
var
s:string;
s0:string;
begin
s0:='"';
s:='delete from Tuser where id='+s0+'as'+s0 ;
with query1 do
begin
close;
sql.Clear;
SQL.Add(s);
execsql;
close;
end; begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from Tuser');
Query1.open;
end;
end;
解决方案 »
- 请教高手 delphi调用C++ dll问题
- 如何获取一个文件的扩展名,创建时间,最后修改时间等等的一系列和文件有关的信息?
- 求助:有关OPENDIALOG的问题
- 截取 Http 头信息?
- 排列组合问题?
- 想做一个接口,对方的数据库是*.db格式的,用ACCESS链接后发现里面的数据不能修改,增加,该文件的属性是存挡格式的,如何才能修改他呢?
- 请教!!!
- readfile()函数想取出MODED的接收缓冲区的数据,却取出了MODEM的发送缓冲区的数据,为什么?
- 让edit框中的文字显示在中间位置是什么属性???
- 小妹?^_^?:捉虫:向数据库中添加字段的问题?
- ttransitionlist类出错
- delphi新人求助
s:='delete from Tuser where id='+s0+'as'+s0 ;这地方明显有问题,你的ID就是as?按理说as应该是个变量来的,不然你只能删固定的ID为as的一条记录了.而且你这样加双引号也不对.参数下面代码,假如有个id变量,是字符串型的,应该这样:s:='delete from Tuser where id='+quotedstr(id);
//...
按理说叫id的字段应该是整型的,但看原来的代码它应该的字符串
2.虽然我不懂 数据库 可看你这代码 感觉你连基本的Delphi 写 SQL 语句都不懂
SQL里字符串用单引号 而不是 " 因为delphi 的单引号是字符串定义的界限 所以 delphi 字符串 里的单引号要用#39 代替
s0:='"';
s0:=''''; 或 s0:=#39;你还是别毕业了吧.
分给我你继续深造吧....
as在mssql里也算是一个关键字了,做字段名,要[as],或者干脆换掉
Parameters.ParamByName('字段').Value:='as';这样才是赋值把?
懒人的办法, 代码里是得用两个单引号来替换双引号,这个问题也困绕我好几天才解决。
建议用ADO,BDE移植不大方便。用ADO一编译完就可以直接复制到其他机器上用。
但是删除的代码不对,看在都被同样问题烦恼的份上帖代码
DataModule2.ADOQuery1.Close;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add('delete from Tuser where id = :id' ); //设置删除条件
DataModule2.ADOQuery1.Parameters.ParamByName('id').Value := '你要赋的值';//给变量id赋值
DataModule2.ADOQuery1.Open;这样能看懂吧???变量还是用赋值的方式来进行维护比较好。再不行就按照我上一楼的办法用控件解决。