编写asp组件要访问数据库。。运行怎么都通不过谁有范例请发一个。。谢谢!

解决方案 »

  1.   

    最有效最可行最有前途最好用的方法是:换语言,用.net
      

  2.   

    DELPHI中写ACTIVXDLL可不象VB那么简单,你公开的所有方法都要通过TYPE LIBRARY(在VIEW菜单里)来声明接口
      

  3.   

    <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 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是记录集的返回值。
      

  4.   

    eastliangliang(青苹果)(花落!燕回?)  给一个写组件的例子。。
      

  5.   

    例子来啦:)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的组件服务,就可以看见我们写的组件啦。
      

  6.   

    这个组件是新写的,和前面的ASP网页上用的有区别。
    set MyInterface = createobject("server.SearchInDB")这句里的server.SearchInDB换一下即可,换成什么到组件服务里看看就知了:)