一个'学生'表,有-所在分院CHAR(8),所在班级CHAR(10),学号CHAR(10),姓名CHAR(10),性别CHAR(2),职务CHAR(10),出身年月CHAR(10),籍贯CHAR(8),所在寝室CHAR(10)共9项
界面上有5个EDIT
EDIT1-学号
EDIT2-籍贯
EDIT3-班级
EDIT4-分院EDIT5-寝室
开始实验程序
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.close;
Query1.sql.clear;
Query1.sql.add('select * from 学生 where 学号 =' +EDIT1.TEXT);
Query1.open;end;
查询我的SQLSERVER数据库没有问题
但是我改成
Query1.sql.add('select * from 学生 where 寝室 =' +EDIT5.TEXT);
或者Query1.sql.add('select * from 学生 where 所在分院 =' +EDIT4.TEXT);
或者其他的都不行,编译没有问题,但是输入数据后查询会出现什么列不匹配之类的错误
这我就不懂了
不知道为什么只有查学号是没有问题的

解决方案 »

  1.   

    呵呵,改成:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Query1.close;
    Query1.sql.clear;
    Query1.sql.add('select * from 学生 where 学号 =''' +EDIT1.TEXT+'''');
    Query1.open;end;
    这种情况你一般把SQL语句SHOWMESSAGE,然后COPY到查询分析器中使使!
    原因:学号是不是都是数字,但是其他的是不是有字母,或者汉字什么的!
      

  2.   

    呵呵,改成:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Query1.close;
    Query1.sql.clear;
    Query1.sql.add('select * from 学生 where 学号 =''' +EDIT1.TEXT+'''');
    Query1.open;end;
      

  3.   

    真的!在查询分析器里面也不能实现!
    但是''' +EDIT1.TEXT+''''
    加这么多空格会什么就OK拉
      

  4.   

    在查询分析器里加个单引号就可以了
    那不是Query1.sql.add('select * from 学生 where 学号 ='+' EDIT1.TEXT');这样么
    再次不懂