哪位大哥知道:CGI里面一定要用Tquerytableproducer才能查询,而不可以直接用query来查询数据库吗?我试了,但始终在IE里看不到结果,只有:“内部服务器错误”的消息。哪位有相关经验,敬请赐教!

解决方案 »

  1.   

    例程如下,非常简陋,见笑了:  xibie:=request.ContentFields.Values['xibie'];
      zhye:=request.ContentFields.Values['zhye'];
      name:=request.ContentFields.Values['name'];
      num:=request.ContentFields.Values['num'];//四个从表单获取的数据;  qry.Close;
      qry.SQL.Clear;
      qry.SQL.Add('select * from ksid where ksid.ksbh='+''''+num+'''');
      qry.Open;
      vxibie:=qry.Fields.Fields[1].AsString;
      vzhye:=qry.Fields.Fields[2].AsString;
      vname:=qry.Fields.Fields[3].AsString;
      qry.Close;//查询数据库中响应记录;此段语句已通过简单测试程序测试;response.Content:='<html><body>data from db '+vxibie+vzhye+vname+'</body><html>';
      

  2.   

    大概是你的数据源不是系统数据源吧,所以访问不到。在 ODBC 中设置 system dsn。
      

  3.   

    数据源是自己定义的数据库啊,是delphi自带的那个数据库啊。
    用另外的测试程序——用一个按纽事件,激发数据库的查询——测试上面的语句时是完全ok的呀!
    真的没人知道作为CGI程序,有什么不同吗?
      

  4.   

    别名没有问题。
    今晚看了D5开发人员指南,里面有个例子,是用Table的locate来查找;满以为可以的,但还是不行。
    就是想不明白,难道跟数据库连接真有这么难么?同样的别名、同样的表、同样的参数、同样的语句,在有窗体的测试程序中明明是ok的,为什么到了CGI/ISAPI这里就不灵了呢?郁闷 中!
      

  5.   

    提点建议:
    1、检查表单数据是否准确地传到CGI;
    2、qry.SQL.Add('select * from ksid where ksid.ksbh='+''''+num+'''');语句是否正确?如果ksid.ksbh是数字型的直接('select * from ksid where ksid.ksbh='+num)就行了,如果是字符串型,好像你的单引号多了些,应该是+ ''' + num + ''' 或者 + #39 + num + #39;
    3、对数据表操作难免失败的时候,如果没找到符合条件或者数据库毛病,应该有异常相应,用网页显示错误,也好知道是哪里出了毛病;
    4、如果是ISAPI,应该在远程数据模块上放TSession元件;
      

  6.   

    在数据库操作部分用 try...except 语句,把出错信息放到网页上看看。
    CGI 和 ISAPI 程序的权限是有限的,它可能不能直接访问你的数据库所在的目录。
      

  7.   

    谢谢两位大哥!
    那么,事实上,上面的语句是正确的,错误的是我自己,我将数据库中的字段名写错了! maozefa(之源) :谢谢你的建议!不过,真的应该要用四个单引号的。