delphi xe6 android mssql bağlantısı hakkında

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

delphi xe6 android mssql bağlantısı hakkında

Mesaj gönderen mustafasoy »

delphi xe6 ile birlikte amatör anlamda android ios vs. denemeler yapmaya başladım ve web servis ile bağlantı kurabildim ancak bazı sorunlarla karılaştım bu konuda fikirlerinize ihtiyacım olacak
xe6 ile yapılan uygulamalarda veritabanına ulaşmak için hangi yönetemler uygulanabilir web servis dışında bir yöntemle bilgi alabiliyormuyuz?


aşağıdaki web servis kodu ile delphi içerisinden bilgilere ulaşabiliyorum ancak
1.bu sorguya parametre göndererek sadece istediğim koşula uyan kayıtları getirmeyi başaramadım
2.kod ile parametre göndererek istediğim bilgilere ulaşabiliyorum ancak bu sefer dönüş değeri dataset olduğu için delphi içerisinden bu bilgilere ulaşamıyorum

bu konuya çözüm bulabilirmiyiz?
1-

Kod: Tümünü seç

 public class Cari
        {
            public string CKod { get; set; }
            public string CName { get; set; }

            public List<Cari> getCariList()
            {
                SqlConnection cnn = new SqlConnection(WebConfigurationManager.ConnectionStrings["SqlBaglanti"].ToString());
                if (cnn.State == ConnectionState.Closed)
                    cnn.Open();
                List<Cari> SonucList = new List<Cari>();
                SqlCommand cmd = new SqlCommand("Select top 10 CKod,CName from cari_kart", cnn);
                SqlDataReader rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    Cari c = new Cari();
                    c.CKod = rdr.GetString(0);
                    c.CName = rdr.GetString(1);
                    SonucList.Add(c);
                }
                return SonucList;
            }
        }
            [WebMethod]
        public List<Cari> CariList(string ckod)
        {
            Cari ck = new Cari();
            return ck.getCariList();
        }
2-

Kod: Tümünü seç

  public DataSet get_all_cari()
        {
            string query = String.Format("SELECT ckod,cname,unvan  FROM  cari_kart");
            return select(query);
        }
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: delphi xe6 android mssql bağlantısı hakkında

Mesaj gönderen mrmarman »

- DataSnap konusunu araştırınız.

- ClientDataset ile uzak veri erişim ve SQL kod ile insert/delete vb. imkanı vardır.

- Android, mobil bir platform olduğundan sürekli online bağlantılı veritabanı erişimine salık verilmez. Bu nedenle daima offline erişim tercih edilir.

- Bu da DataSnap ile (webservis mantığı ile aynıdır) verinin istendiği an çekilerek değerlendirilmesi, sonucun yeniden sorgu ile sunucuya yollanması şeklinde bir metod izlenir.
Resim
Resim ....Resim
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: delphi xe6 android mssql bağlantısı hakkında

Mesaj gönderen mustafasoy »

Kod: Tümünü seç

  public class MakinaListesi
            {
                public int ariza_id { get; set; }
                public string tanim { get; set; }
                public int adet { get; set; }

                public List<MakinaListesi> getmakinaList(string wmkod)
                {
                    SqlConnection cnn = new SqlConnection(WebConfigurationManager.ConnectionStrings["SqlBaglanti"].ToString());
                    if (cnn.State == ConnectionState.Closed)
                        cnn.Open();
                    List<MakinaListesi> SonucList = new List<MakinaListesi>();
                    SqlCommand cmd = new SqlCommand("select * from dbo.makgetir(@wmkod)", cnn);
                    cmd.Parameters.AddWithValue("@wmkod", wmkod);
                    SqlDataReader rdr = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        MakinaListesi m = new MakinaListesi();
                        m.ariza_id = rdr.GetInt32(0); // int olduğunda bu şekilde string aşağıdaki gibi aynı zamanda yukarıdaki değerde int tanımlanmlaı
                        m.tanim = rdr.GetString(1);
                        m.adet = rdr.GetInt32(2);
                        SonucList.Add(m);
                    }
                    return SonucList;
                }
            }
            [WebMethod]
            public List<MakinaListesi> makinagetir(string wmkod)
            {
                MakinaListesi mk = new MakinaListesi();
                return mk.getmakinaList(wmkod);
            }
yukarıda sormuş olduğum sorunun cevabını yukarıdaki kod ile çözdüm
ancak takıldığım diğer kısım ile delphiye gelen bilgisinin satır sayısını bilemediğim için döngüye kaç kez gireceğimi bilemiyordum , bunun için sql tarafında satır sayısını tespit ederek dönüşün tablo cinsinden olduğu bir yapı kurdum (çok hoşuma gitmesede çaresizlik diyelim) ve buna göre dönüyorum ancak yolun doğruluğundan emin değilim bu noktada yol göstermenizi rica ediyorum

Kod: Tümünü seç

procedure TForm1.FormShow(Sender: TObject);
var
 ws:Service1Soap;
 i,j:Integer;
 mak_listesi:ArrayOfMakinaListesi;
 mk:MakinaListesi;
begin
 sl_ariza_id:=TStringList.Create;
 wmkod:=InputBox('Makina Kodunu giriniz','Makina Kodu','T001');
 ws:=GetService1Soap(True,'',nil);
 mak_listesi:=ws.makinagetir(wmkod);

for I := 0 to   mak_listesi[2].adet-1 do
begin
ListBox1.Items.Add(mak_listesi[i].tanim);
//sl_ariza_id.Add(IntToStr(mak_listesi[i].ariza_id));

end;
end;
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: delphi xe6 android mssql bağlantısı hakkında

Mesaj gönderen SimaWB »

ArrayOfMakinaListesi tipi tam olarak nedir belli değil.
Dynamic Array olduğunu tahmin ediyorum (array of Int gibi). Eğer öyleyse Length(mak_listesi) dizinin uzunluğunu verir.
En son SimaWB tarafından 11 Tem 2014 04:35 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
There's no place like 127.0.0.1
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: delphi xe6 android mssql bağlantısı hakkında

Mesaj gönderen mustafasoy »

üstadım allah razı olsun nokta atışı tespit oldu
for I := 0 to Length(mak_listesi)-1 do şeklinde sorunum çözüldü
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Cevapla