ISAPI,RDBMS,ERRORS(100分)

  • 主题发起人 主题发起人 HORNEY
  • 开始时间 开始时间
H

HORNEY

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ISAPI写了一个BBS,后台是INTERBASE,TDATABASE(关闭登录框,登陆参数也已设置
好)在设计期连接正常,但RUN时只要一OPEN他就说:UNKNOWN USERNAME OR PASSWORD
UNAVAILABLE ALIAS:XXXX
如果在设计期ACTIVE设为TRUE,那么提交页跟本显示不出来。
 
代码贴出来,我好像见过你这种问题的。
可以给我发邮件:
<a href:="mcsoft@iname.com">mcsoft@iname.com</a>
 
下面是提交页的代码BDE和ADO都用过了,用BDE回有报错音,而ADO哪怕是放一个相关元件,
该页就根本显示不出来
try
datab.open;
except
beep;
end;
response.content:='<html><p>THIS PAGE</p></html>';
response.SendResponse;
try
adoconnection1.Open;
except
beep;
end;
{adoconnection1.BeginTrans;
adoquery1.SQL.Add('insert into imca2 values("","","")');
adoquery1.ExecSQL;
adoconnection1.CommitTrans;
beep;
adoconnection1.RollbackTrans;
{datab.StartTransaction;
query.sql.clear;
query.sql.Add('insert into imca2 values("","","")');
query.execsql;
datab.Commit;}
 
对了,还有听说BDE在一个进程里只支持32个连接,这是真的吗,这样的话用ISAPI
不是。。。
 
我和你的遭遇一样。我用BDE连正常,后来换用IBX控件屡费周折。
如果用BDE连,要特别注意TSession的运用,还有,在设计期一定要把Database,Table,
Query等控件的Active设为false,另外写代码来初始化和打开连接。

以下是一个在Win2k,IB5.1.1,IIS5, IE5.5上通过的程序。
我把DFM和PAS都给你。程序中有
IbDBase: TDatabase;
MyTable: TTable;
Default: TDataSetTableProducer;
一个Action Item: Default 激活时将TTable中的内容列出。

// *.DFM
object WebDisp: TWebDisp
OldCreateOrder = False
OnCreate = WebModuleCreate
OnDestroy = WebModuleDestroy
Actions = <
item
Default = True
Name = 'default'
PathInfo = '/default'
OnAction = WebModule1defaultAction
end>
Left = 192
Top = 103
Height = 480
Width = 696
object MyTable: TTable
DatabaseName = 'DOC'
IndexFieldNames = 'DOCKEY'
TableName = 'DOC'
Left = 40
Top = 56
object MyTableDOCKEY: TStringField
FieldName = 'DOCKEY'
FixedChar = True
Size = 100
end
object MyTableDOCLOCATION: TMemoField
FieldName = 'DOCLOCATION'
BlobType = ftMemo
Size = 32767
end
end
object IBDbase: TDatabase
DatabaseName = 'DOC'
DriverName = 'INTRBASE'
LoginPrompt = False
Params.Strings = (
'SERVER NAME=C:/Interbase/DOC.GDB'
'USER NAME=SYSDBA'
'PASSWORD=masterkey')
SessionName = 'Default'
Left = 96
Top = 56
end
object default: TDataSetTableProducer
Columns = <
item
FieldName = 'DOCKEY'
end
item
FieldName = 'DOCLOCATION'
end>
DataSet = MyTable
Left = 40
Top = 120
end
end



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, HTTPApp, DBWeb, Db, DBTables;

type
TWebDisp = class(TWebModule)
MyTable: TTable;
IBDbase: TDatabase;
MyTableDOCKEY: TStringField;
MyTableDOCLOCATION: TMemoField;
default: TDataSetTableProducer;
procedure WebModule1defaultAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModuleCreate(Sender: TObject);
procedure WebModuleDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
WebDisp: TWebDisp;

implementation

{$R *.DFM}

procedure TWebDisp.WebModule1defaultAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
Response.Content:= Default.Content;
Response.SendResponse;
end;

procedure TWebDisp.WebModuleCreate(Sender: TObject);
begin
IbDbase.Connected:=true;
MyTable.Active:=true;
end;

procedure TWebDisp.WebModuleDestroy(Sender: TObject);
begin
MyTable.Active:=false;
IbDbase.Connected:=false;
end;

end.
 
高度关注
 
问题我自己解决了,只要在NT控制面板服务中不设置与桌面交互即可,
如果有谁能告诉我BDE在一个进程内能够打开的最大连接数,就分赃了。
 
BDE可以同时打开32个连接
 
多人接受答案了。
 
后退
顶部