急:SQL语句出错! (100分)

  • 主题发起人 主题发起人 caoxizi
  • 开始时间 开始时间
别踩了,直接扔掉算了。
 
还是那个错 我现在要reset了,要是还不行 ,我就...
 
我觉有必要问一下你的数据库以及userinfo的表结构?
 
reset还是不行
我用的是Access数据库,表uesrinfo十分简单,三个字段:用户名 20字符;密码 8字符;还有一个是权限 ture/fause
 
方法一可以将EditModiName.Text作为SQL参数使用;
方法二操作符右边不为常量,可能是通过一个变量
指定的值,或由一输入框给出的值。这时需要用到Format函数。
 
to caoxizi:

我现在有百分之八十知道你错在哪里了,
你在 where前加一个空格试试。就是这样:
sql.add('select * from userinfo');
sql.add(' where 用户名="'+EditModiName.Text+'"');
如果对了,可要记得给分噢!
 
刚才我用程序测试,没有任何问题:
Access 2000数据库
procedure TForm1.Button1Click(Sender: TObject);
begin
adoQuery1.SQL.Text := 'select * from userinfo where 用户名 = ''' + Edit1.text + '''';
adoQuery1.Open;
end;

实在不行,你把程序发给我,让我看看你的错误:nghoul@163.com

 
你的where前面好像少了空格
 
刚才的问题解决了 各位说的对 后来出错是“=”惹的祸 但运行还有错:
insert新记录时说:"查询值的数目与目标字段中的数目不同":难道是字符数不够?
查找/删除时都说:“ADOQuery1:CommandText does not return a result set”

什么问题?
thx :)
 
to caoxizi:

对于insert时的错误,是因为你插入的字段数与表中的字段数不相等。
对于查找/删除时的错误,是因为你删除时,需要调用adoquery1的 execsql,
而不是open。只有在select 时,才使用open; OK?
 
查找/删除时都说:“ADOQuery1:CommandText does not return a result set”
用execsql語句﹐不要用open或Active:=true
ExecSql語句執行后不會返回值﹗﹗
 

找到问题的答案了,就应该记得人家,可要给分噢!

-----一个专门跟踪不给分的人的密探!
 
jrq的是标准答复.
 
这么写是有错的:
sql.add('select * from userinfo where 用户名='''+EditModiName.Text+'''');
当.text中出现 ' 这个符号时就出错,
改为:
sql.add('select * from userinfo where 用户名='+quotedstr(EditModiName.Text));
 
如果你的sql语句写成:
sqlstr:= 'select * from userinfo where 用户名 = ''' + Edit1.text + '''' ;
with query do
begin
close;
sql.clear;
sql.add(sqlstr);
open();
end;

这样也不对的话,我也觉的你的错误不大可能在sql语句上。
 
有无搞错?这样一个问题竟然需要这么多人来解决?
早日结贴吧!

delphi中涉及到用sql语句来对数据库进行操作时,如果没把握,最好在做open或execsql
之前,将sql语句的内容保存起来,在数据库集成环境下进行测试,测试成功后再去调试
程序!

这种问题要纠缠这么久的话,不要做事了!!!
 
第二句SQL语句中你的'和where之间有没有加空格?象下面这样试一下:
sql.add(' where 用户名="'+EditModiName.Text+'"');
我以前在做的时候经常犯这样的错误.

小错误,但是会害死人
 
问题解决了 银子也分了 这么个小问题 劳烦大家这么久 多谢啦 :)
还有个小问题,对于insert时的错误"查询值的数目与目标字段中的数目不同",pcc_mmz1说是因为插入的字段数与表中的字段数不相等,好像不是这么回事,留个email,盼大虾解惑啊!!!
email:caoxizi@163.com
 
后退
顶部