function TDoSQL.CreateXML(const ServerName, DataBaseName, SqlStr,
  FileName: WideString): SYSINT;
var
    XmlADOConn: TADOConnection;
    XmlADOQuery: TADOQuery;
begin
    Try
        //创建对象
        XmlADOConn := TADOConnection.Create(nil);
        XmlADOConn.ConnectionString := 'Provider=SQLOLEDB.1;Password=samima;Persist Security Info=True;User ID=sa;Initial Catalog='+DataBaseName+';Data Source='+ServerName;
        XmlADOConn.Connected := True;        result := 1;
    Except
        //XmlADOQuery.Free;
        //XmlADOConn.Free;
        result := 0;
    End;end;这断代码生成的DLL对sa空密码的好用,可是如果sa有密码就不行了。
为什么呀?
我已经把sa的密码samima封装在里面了呀!!

解决方案 »

  1.   

    ....
    XmlADOConn.LoginPrompt := False;
    XmlADOConn.Connected   := True;
    ....
      

  2.   

    不好使呀,在应用程序里是这样的,但是在ActiveX里就不好使了,不知道为什么呢?我做了一个普通的dll,delphi和pb调用都没有问题,可是给asp调用的这个就对sa非空密码无可奈何了,真是上火!!!!
      

  3.   

    asp应用中应考虑执行者(匿名网络用户)的权限问题。
    建议检查SQL的登陆验证方式。
      

  4.   

    我把程序改成这样,完全好使呀
    function CreateXML(const ServerName, DataBaseName, SqlStr,
      FileName: WideString): boolean;
    var
        XmlADOConn: TADOConnection;
        XmlADOQuery: TADOQuery;
    begin
        Try
            //创建对象
            XmlADOConn := TADOConnection.Create(nil);
            XmlADOConn.ConnectionString := 'Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog='+DataBaseName+';Data Source='+ServerName;
            XmlADOConn.Connected := True;        result := true;
        Except
            //XmlADOQuery.Free;
            //XmlADOConn.Free;
            result := false;
        End;end;
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      if  CreateXML(ServerName, DataBaseName, 'SqlStr',
      'FileName') then
         ShowMessage('OK')
      else
         ShowMessage('error');
    end;你再试试
      

  5.   

    to 楼上的
    在应用里当然好用了,我说的是在asp下调用dll不好用
      

  6.   

    偶也做delphi的dll,只是给asp.net 调用,你的问题我顺便试了一下,调用成功了。function CreateXML(ServerName, DataBaseName: pchar): integer; stdcall;
    var
        XmlADOConn: TADOConnection;
    begin
        Try
            //创建对象
            XmlADOConn := TADOConnection.Create(nil);
            XmlADOConn.ConnectionString := 'Provider=SQLOLEDB.1;Password=emos;Persist Security Info=True;User ID=emos;Initial Catalog='+strPas(DataBaseName)+';Data Source='+strPas(ServerName);
            XmlADOConn.Connected := True;        result := 1;
            XmlADOConn.Close;
            XmlADOConn.Free;
        Except
            //XmlADOQuery.Free;
            //XmlADOConn.Free;
            result := 0;
        End;end;只是不知道asp和asp.net有何区别.
      

  7.   

    在Delphi里面做COM+是NEW->other->activeX->Transcational Object