DataSnap Insert İşlemi Hakkında

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Raskolnikov
Üye
Mesajlar: 37
Kayıt: 15 Tem 2010 10:43

DataSnap Insert İşlemi Hakkında

Mesaj gönderen Raskolnikov »

Selam herkese

ben basit bir db uygulaması yapıyorum ancak insert işlemini yapamadım.

DataSnapserver tarafında sunucu bağlantısı mevcut(mssql). Client ile verileri alabiliyorum ama insert yapamadım.

Kod: Tümünü seç

ClientDataSet1.Open;
ClientDataSet1.Insert;
ClientDataSet1.FieldByName('id').AsInteger := 3;
ClientDataSet1.FieldByName('Name').AsString := 'Ali AYVAZ';
ClientDataSet1.FieldByName('Phone').AsString := '+905559223655';
ClientDataSet1.Post;
bu şekilde veri gönderiyorum ama kayıt gerçekleşmiyor.

Kod: Tümünü seç

ClientDataSet1.ApplyUpdates(0);
satırını ekleyince hata dönüyor.
Remote Error: SQL State: HY000 Connection is busy...
Server tarafında bişey yapmama gerek varmı? nerede hata yapıyorum acaba?

tşklr.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: DataSnap Insert İşlemi Hakkında

Mesaj gönderen mrmarman »

Merhaba.

- Ben şahsen kayıt eklerken böyle yerel veritabanı gibi kullanmayı hiç tercih etmiyorum.
- SQL içeriğini güzel basit bir INSERT satırıyla sunucuya yollayıp karşı tarafta yerel olarak kayıt altına alınmasını, EXECSQL komutu ile yapmayı tercih ediyorum.

Bu linkte embarcadero

Kod: Tümünü seç

ClientDataSet1.InsertRecord([1001, null, 'new']);
şeklinde bir komut önermiş. Linki inceleyip deneyebilirsin.
Resim
Resim ....Resim
Raskolnikov
Üye
Mesajlar: 37
Kayıt: 15 Tem 2010 10:43

Re: DataSnap Insert İşlemi Hakkında

Mesaj gönderen Raskolnikov »

Hocam tekrar merhaba;

Ben webservislere çok yabancıyım. İlk defa DataSnap ile çalışıyorum. ExecSQL(); komutunu kullanırken server tarafında kendinize özel bir procedure mü yazıyorsunuz? Yukarıda ki şekilde de denedim ama çalışmadı. Server tarafında yanlış yada eksik bişeyler var sanırım. Hata almıyorum ama kayıt eklenmiyor. Sanki bişeyler havada kalmış gibi.

Server tarafımda hiç kod yok sadece sql bağlantısı var ve gerekli Provider tanımları. Select çekebiliyorum ama insert-update-delete yok. Bunlar için ayrı ayrı procedure mi yazmam lazım WCF gibi mi? Yada başka bir mantığı mı var?

Kod: Tümünü seç

procedure TServerMethods1.InsertData(Id:Integer; Name, Phone: String);
begin
  with Contacts do
    begin
      Open;
      ParamByName('id').AsInteger:=Id;
      ParamByName('Name').AsString:=Name;
      ParamByName('Phone').AsString:=Phone;

      ExecSQL();

    end;
end;
gibi yazdım ama çağıramıyorum bunu clientten. Hata alıyor Invalid procedure gibi bişey yazıyor.

Teşekkürler.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: DataSnap Insert İşlemi Hakkında

Mesaj gönderen brs »

Kod: Tümünü seç

with User do
 begin
Close;
 SQL.Clear;
SQL.Add('Insert Into User (KULLANICI, SIFRE, ONLINE)');
SQL.Add(' Values (:KADI, :SIF, :ON)');
ParamByName('KADI').AsString := Edit1.Text;
ParamByName('SIF').AsString := Edit2.Text;
ParamByName('ON').AsString := 'Hayır';
 ExecSQL;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Raskolnikov
Üye
Mesajlar: 37
Kayıt: 15 Tem 2010 10:43

Re: DataSnap Insert İşlemi Hakkında

Mesaj gönderen Raskolnikov »

merhaba @brs

bu kodu server tarafı için mi yazdınız? Client tarafından bunu nasıl çağıracağım?
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: DataSnap Insert İşlemi Hakkında

Mesaj gönderen brs »

Sizi yanlış anlamadıysam eğer, İstediğiniz databaseye insert olarak kayıt ekleyebilirsiniz...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Raskolnikov
Üye
Mesajlar: 37
Kayıt: 15 Tem 2010 10:43

Re: DataSnap Insert İşlemi Hakkında

Mesaj gönderen Raskolnikov »

Kayıt ekleme değilde DataSnap Client-Server mantığını (Web Service) anlamaya çalışıyorum. DataSnapServer'a client uygulamalardan erişip orada ki function, procedure leri çağırmayı öğrenmek istiyorum. Buna Insert Update Delete işlemleri de dahil tabii ki. Ama anlayamadım bir türlü.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: DataSnap Insert İşlemi Hakkında

Mesaj gönderen brs »

Databasedeki verileri listview isteler

Kod: Tümünü seç

procedure TForm3.ListeleClick(Sender: TObject);
begin
  try
  ListView1.Items.Clear;
    with User do
    begin
      Close;
      SQL.Text := 'Select * From User where KULLANICIADI like ' +
        QuotedStr('%' + Edit1.Text + '%') + ' order by SIRANO DESC';
      Open;
      while Not Eof do
      begin
        with ListView1.Items.Add do
        begin
          Caption := IntToStr(Form3.ListView1.Items.Count);
          SubItems.Add(FieldByName('SIRANO').AsString);
          SubItems.Add(FieldByName('KULLANICIADI').AsString);
          Next;
          Bilgi.Caption := 'Listeleme İşlemi Başarıyla Tamamlandı!';
        end;
      end;
    end;
  except
    Application.MessageBox('Listeleme İşlemleri Sırasında Hata Oluştu!', 'Hata',
      MB_Ok or MB_ICONQUESTION);
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Raskolnikov
Üye
Mesajlar: 37
Kayıt: 15 Tem 2010 10:43

Re: DataSnap Insert İşlemi Hakkında

Mesaj gönderen Raskolnikov »

Yanlış anlaşıldım galiba. Örneklemeyi DataSnap üzerinden verebilirsek çok faydalı olacaktır.
Cevapla