Web Servis ADO Bağlantısı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Web Servis ADO Bağlantısı

Mesaj gönderen m_ekici »

Merhaba arkadaşlar

Delphi ile web servis yazan var mı?
Servis içerisinde SQL bağlantısını nasıl yapıyorsunuz?

İyi Çalışmalar
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Web Servis ADO Bağlantısı

Mesaj gönderen xxxjedixxx »

Ben bir tane yazmıştım. Aşağıdaki örnekte, servisinin bir fonksiyonu çağırıldığında nasıl database'e bağlanılacağını ve sorgu yapılacağını anlatmaya çalıştım. Umarım işini görür.

Servisin adı "mysapws", aşağıdaki örneği ona göre çözümlersin.

Kod: Tümünü seç

 Tmysapws = class(TInvokableClass, Imysapws)
  private
    AdoDB: TADOConnection;
    Query: TADOQuery;
    ...    
    function ConnectDatabase: Boolean;
    ...
  public
    function GetData(prm1, prm2, prm3 ... ): TMyData; stdcall; //dışarıya yayınladığım fonksiyon bu olsun
    ...
  end;

implementation

function Tmysapws.ConnectDatabase: Boolean;
begin
  if AdoDB = nil then AdoDB := TADOConnection.Create(nil);
  if Query = nil then Query := TADOQuery.Create(nil);
  Result := AdoDB.Connected; 
  if Result then Exit;

  AdoDB.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=True;Data Source=SUNUCU;Initial Catalog=VERITABANI;User ID=KULLANICI;Password=PAROLA';
  try
    Query.Connection := AdoDB;
    if not AdoDB.Connected then AdoDb.Connected := True;
    Result := AdoDB.Connected;
  except
  end;
end;

procedure TMySapws.GetData(prm1, prm2, prm3 ... ): TMyData; stdcall;
begin
  ...
  if not ConnectDatabase then Exit;
  try
    Query.SQL.Text := 'select * from table where .... ';
    Query.Active := True;
    // gerisi standart rutinler, query ile veri işleme kodları vs.
    ...
  except
  end;
  ...
end;
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Web Servis ADO Bağlantısı

Mesaj gönderen m_ekici »

Servisin uses kısmına ComObj, System.Variants, ADO gibi eklemeler yaptığımda ISS web servisi çalıştırmıyor. Servis içerisinde dosya (INI) açma, connection işlemleri için özel bir ayar mı lazım?
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Web Servis ADO Bağlantısı

Mesaj gönderen xxxjedixxx »

IIS yönetiminden Application Pools altındaki DefaultAppPool'un (servis hangisini kullanıyorsa) gelişmiş ayarlarındaki "Enable 32-bit applications" seçenğini True yap.
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Web Servis ADO Bağlantısı

Mesaj gönderen m_ekici »

Enable 32-bit applications=true şeklindeydi. Kod içerisinde toplama yapan bir fonksiyon var. Herhangi bir ekleme yapmadan bu şekilde çalışıyor. Ama uses kısmına birşeyler ekleyip web servisi çağırdığımda DesaultAppPool duruyor.
Cevapla