关于在BCB 写的 WEB SERVICE 上使用数据库出错(50分)

  • 主题发起人 主题发起人 askall
  • 开始时间 开始时间
A

askall

Unregistered / Unconfirmed
GUEST, unregistred user!
我用BCB6写了一个SOAP服务器端 使用的CGI方式的WEB SERVICE
如下过程被客户端调用
String Tsoap1Impl::GetInfo(String s)
{
TLocateOptions lo;
String ret=s + ": ";
try{
WebModule1->ADOConnection1->Open();
WebModule1->ADOQuery1->Open();
if(WebModule1->ADOQuery1->Locate("fzr",s,lo))
ret = WebModule1->ADOQuery1->FieldByName("kl")->AsString;
ret = "查询字串是:["+s+"] 返回字串是:["+ret+"]";
}
catch(Exception& e){
ret = ret + e.Message;
}
return ret;
//return "输入字串是: "+s;
}

其中使用了ADO访问数据库,ADO控件放在了 WebMoudle上,
但一被客户端调用就出错,如果我去掉其中的数据库操作部分,则调用一切正常
而且同样的程序用 CGI 方式就出错,如果用WAD方式,也能正常操作数据库。
不知道谁能解释一下?
 
出什么错?错误信息?
ADOConnection1.ConnectionString是什么
 
我的客户端程序在调用此 GetInfo() 之后,反回的都是
e.Message 中的错误信息。

ADOConnection1.ConnectionString 没有问题调用的是 ACCESS的一个数据库
而且我调用 MSSQL2000试过,用 BDE DATABASE,QUERY,TABLE 调用也试过
错误一样。我测试时发现从用到数据库中的OPEN()开始就出错。

 
〉反回的都是e.Message 中的错误信息
那究竟是什么错误信息啊

〉ADOConnection1.ConnectionString 没有问题
当然你给出来是有用的,我才知道一些基本的信息
你说用的是access,那么,你的cgi是运行于IUSR_xxx账号下的,
你确定你的access数据库文件的安全设置,这个账号对这个数据库文件由读写权限吗
 
就是你看你的mdb文件的文件属性里面的安全属性,看 IUSR_xxxx 这用用户是否可以读写他
当然,你可以简单的设置 everyone可以读写
 
错误信息是 “: EAccessViolation”
ADOConnection1.ConnectionString 是
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:/PROJECTS/wj/autoinfo.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=superpassword;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

关于MDB的访问权限问题,不是这个原因。
因为我试着用ADO联过SQL SERVER 2000的
用BDE联接过 返回的错误都一样,就那么一句话。
但是我在用Web App Debugger Executable方式写这个WEB SERVICE时操作数据库就正常。
偏偏用 CGI 方式写的就不行。


 
Web App Debugger Executable 是什么东西啊,它是怎么运行的,就是在当前用户下执行的吗?
另外connectionstring你有需要用特殊的扩展设置吗?如果没有,那么用下面的短短的就可以了
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/PROJECTS/wj/autoinfo.mdb
(建议把 C:/PROJECTS/wj/autoinfo.mdb 安全属性设置为everyone完全控制试试看?)
 
这位 pipi仁兄:
你真是很热心,但是。。。
你到底有没有用BCB 或者DELPHI作过WEB SERVICE啊?
如果是一般的 访问数据库的问题,我自己是能搞清楚的。
关于 Web App Debugger Executable
你在DELPHI中 FILE->NEW->OTHER->WEBSERVICE 选 SOAP SERVICE APPLICATION 就能看到
 
我现在只用到了d5和bcb5,那个我还没见过
 
至于有没有用BCB 或者DELPHI作过WEB SERVICE,当然,答案是肯定的
 
顺便说明一下,我的那个WEB SERVICE 是用 BCB6作的。使用的也是
6 中的 SOAP APPLICATION 生成的 WEBMOUDLE
我在用 BCB5中作的CGI程序都是可以正常操作数据库的。
当然在5中我作的是WEB SERVER,而不是 6 中的 WEB SERVICE。
单单只在BCB6中作CGI的 WEB SERVICE时遇到这个问题。
 
我的问题已经解决了,
是用的动态生成DataModule就可以了。
 
后退
顶部