asp组件问题! 编写asp组件要访问数据库。。运行怎么都通不过谁有范例请发一个。。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最有效最可行最有前途最好用的方法是:换语言,用.net DELPHI中写ACTIVXDLL可不象VB那么简单,你公开的所有方法都要通过TYPE LIBRARY(在VIEW菜单里)来声明接口 <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="GENERATOR" content="Microsoft FrontPage 4.0"><meta name="ProgId" content="FrontPage.Editor.Document"><title>New Page 1</title></head><body><%'Dim MyInterface As New SearchInDBset MyInterface = createobject("server.SearchInDB")MyInterface.getalluser OutDataset MyInterface = nothingSet MyADO = OutData%><table border="1" width="100%" align = center> <tr> <td width="20%" align = center>id</td> <td width="20%" align = center>name</td> <td width="20%" align = center>sex</td> <td width="20%" align = center>age</td> <td width="20%" align = center>pwd</td> </tr> <% MyADO.MoveFirst Do while MyADO.Eof = false %> <tr> <td width="20%" align = center><%=MyADO("id")%></td> <td width="20%" align = center><%=MyADO("name")%></td> <td width="20%" align = center><%=MyADO("sex")%></td> <td width="20%" align = center><%=MyADO("age")%></td> <td width="20%" align = center><%=MyADO("pwd")%></td> </tr> <%MyADO.MoveNext loop %> </body>server.SearchInDB是服务器上的一个组件,MyInterface.getalluser是一个方法 OutData是记录集的返回值。 eastliangliang(青苹果)(花落!燕回?) 给一个写组件的例子。。 例子来啦:)1. 用Delphi编写COM组件打开Delphi。点击新建选择ActiveX页,新建一个ActiveX Library。再点击新建,新建一个Transactional Object,起个名字:agent,线程模型选Apartment,事务模式选支持事务即可。完成后会出现Type Library的窗口,如果没有,到菜单view里找。为接口Iagent添加一个方法,名为GetAllUser。点击右边的参数页(Parameters),添加两个参数Name:OutData,Type:VARIANT*,Modifier:out。Name:isSuccess,Type:VARIANT*,Modifier:out。点击刷新按钮,然后关闭Type Library的窗口。回到源码编辑窗口,由于要操作数据库,我们用ADO来连接数据库,为了提高效率,我们将在组件创建时生成ADO对象,组件释放时销毁,需要重载两个函数。找到我们接口的实现类Tagent,添加两个public的函数: procedure Initialize;override;//初始化函数 destructor Destroy;override;//析构函数在初始化函数中建立ADO对象,我们建两个,一个ADOConnection和ADOQuery。别忘了uses ADODB。在Tagent中建立两个私有变量: ADOC:TADOConnection; ADOQ:TADOQuery;函数源码:procedure Tagent.Initialize;var connstr:WideString;begin inherited; try self.ADOC := TADOConnection.Create(nil); self.ADOQ := TADOQuery.Create(nil); connstr := 'Provider=SQLOLEDB.1;Password=cc_web;Persist Security Info=True;'; connstr := connstr + 'User ID=cc_web;Initial Catalog=SmartCon;Data Source=cc-server'; self.ADOC.ConnectionString := connstr;//连接字符串根据数据库连接不同而不同 self.ADOC.Connected := true; except self.ADOC.Free; self.ADOQ.Free; exit; end; self.ADOQ.Connection := self.ADOC;end;destructor Tagent.Destroy;begin self.ADOQ.Free; self.ADOC.Connected := false; self.ADOC.Free; inherited;end;procedure Tagent.GetAllUser(out OutData, isSuccess: OleVariant);var sqlString:WideString;begin isSuccess := false; sqlString := 'select * from agent'; try self.ADOQ.SQL.Text := sqlString; self.ADOQ.Open; OutData := self.ADOQ.Recordset; isSuccess := true; finally self.ADOQ.Close; end;end;OK,组件到此写完,下面注册进COM+组件服务器,很简单,点击菜单run->install COM+ Objects,选中要注册的组件,选择安装到新Application。起个名字,如:Agent,点击OK,完成注册。打开Win2000的组件服务,就可以看见我们写的组件啦。 这个组件是新写的,和前面的ASP网页上用的有区别。set MyInterface = createobject("server.SearchInDB")这句里的server.SearchInDB换一下即可,换成什么到组件服务里看看就知了:) 制作动画效果? 如何判断Excel表中的两个单元格是否合并? 在XP下安装了D6,可不可以不用重装而在98下仍然能用它? 视频采集时如何进行压缩 如何判断ADO中连接异常 如何实现能伪造自己的IP地址发包? 美好的周末 我还在上班 呵呵 脑袋都大了 有没有同样处境的人儿 ado连接access数据库,查询条件中时间类型字段sql怎么表达? ===为什么程序运行时总提示我:"试图激活未注册的丢失目标"=== 开发一个小型工具,费用协商。 我的收藏夹里面没有内容了,CSDN出了问题? 以前收藏的好东东一个都没了,不爽,散分! :( 超级猛料更新
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head><body><%
'Dim MyInterface As New SearchInDB
set MyInterface = createobject("server.SearchInDB")
MyInterface.getalluser OutData
set MyInterface = nothing
Set MyADO = OutData
%><table border="1" width="100%" align = center>
<tr>
<td width="20%" align = center>id</td>
<td width="20%" align = center>name</td>
<td width="20%" align = center>sex</td>
<td width="20%" align = center>age</td>
<td width="20%" align = center>pwd</td>
</tr>
<%
MyADO.MoveFirst
Do while MyADO.Eof = false
%>
<tr>
<td width="20%" align = center><%=MyADO("id")%></td>
<td width="20%" align = center><%=MyADO("name")%></td>
<td width="20%" align = center><%=MyADO("sex")%></td>
<td width="20%" align = center><%=MyADO("age")%></td>
<td width="20%" align = center><%=MyADO("pwd")%></td>
</tr>
<%MyADO.MoveNext
loop
%>
</body>server.SearchInDB是服务器上的一个组件,MyInterface.getalluser是一个方法 OutData是记录集的返回值。
打开Delphi。
点击新建选择ActiveX页,新建一个ActiveX Library。再点击新建,新建一个Transactional Object,起个名字:agent,线程模型选Apartment,事务模式选支持事务即可。
完成后会出现Type Library的窗口,如果没有,到菜单view里找。
为接口Iagent添加一个方法,名为GetAllUser。点击右边的参数页(Parameters),添加两个参数
Name:OutData,Type:VARIANT*,Modifier:out。
Name:isSuccess,Type:VARIANT*,Modifier:out。
点击刷新按钮,然后关闭Type Library的窗口。
回到源码编辑窗口,由于要操作数据库,我们用ADO来连接数据库,为了提高效率,我们将在组件创建时生成ADO对象,组件释放时销毁,需要重载两个函数。
找到我们接口的实现类Tagent,添加两个public的函数: procedure Initialize;override;//初始化函数
destructor Destroy;override;//析构函数在初始化函数中建立ADO对象,我们建两个,一个ADOConnection和ADOQuery。别忘了uses ADODB。在Tagent中建立两个私有变量: ADOC:TADOConnection;
ADOQ:TADOQuery;函数源码:
procedure Tagent.Initialize;
var
connstr:WideString;
begin
inherited;
try
self.ADOC := TADOConnection.Create(nil);
self.ADOQ := TADOQuery.Create(nil);
connstr := 'Provider=SQLOLEDB.1;Password=cc_web;Persist Security Info=True;';
connstr := connstr + 'User ID=cc_web;Initial Catalog=SmartCon;Data Source=cc-server';
self.ADOC.ConnectionString := connstr;//连接字符串根据数据库连接不同而不同
self.ADOC.Connected := true;
except
self.ADOC.Free;
self.ADOQ.Free;
exit;
end;
self.ADOQ.Connection := self.ADOC;
end;destructor Tagent.Destroy;
begin
self.ADOQ.Free;
self.ADOC.Connected := false;
self.ADOC.Free;
inherited;
end;procedure Tagent.GetAllUser(out OutData, isSuccess: OleVariant);
var
sqlString:WideString;
begin
isSuccess := false;
sqlString := 'select * from agent';
try
self.ADOQ.SQL.Text := sqlString;
self.ADOQ.Open;
OutData := self.ADOQ.Recordset;
isSuccess := true;
finally
self.ADOQ.Close;
end;
end;OK,组件到此写完,下面注册进COM+组件服务器,很简单,点击菜单run->install COM+ Objects,选中要注册的组件,选择安装到新Application。起个名字,如:Agent,点击OK,完成注册。打开Win2000的组件服务,就可以看见我们写的组件啦。
set MyInterface = createobject("server.SearchInDB")这句里的server.SearchInDB换一下即可,换成什么到组件服务里看看就知了:)