Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
JSON Verilerini Veritabanına Kaydetmek
#1
Merhaba, iyi forumlar. Delphi Vcl'de bir cxChecklistbox içine eklediğim itemlerden seçili olanları jsonobject içerisinde bool olarak tutup veritabanına kaydediyorum. Ben veritabanıma sadece key değerim gelsin istiyorum. Yani sadece Items.Name'i kaydetmek istiyorum.

Örnek kayıt : {"KUMAŞ":true,"İPLİK":true}

Benim istediğim kayıt : {"KUMAŞ","İPLİK"}

Böyle bir şey mümkün mü? Yardımcı olursanız çok sevinirim. Teşekkür ederim şimdiden  Shy
procedure Ttest.btnKaydetClick(Sender: TObject);
var
 JsonObject: TJSONObject;
 JsonObject2: TJSONObject;
 JsonArray: TJsonArray;
 JsonItem: TJSONBool;
 i: Integer;
 JsonStr: string;
begin
 JsonObject := TJSONObject.Create;

                  //obje>array>obje
 try
 for i := 0 to clbTurler.Items.Count - 1 do
 begin
   if clbTurler.Items[i].Checked then
   begin
     JsonObject.AddPair((clbTurler.Items[i].Text), TJSONTrue.Create);
     JsonArray.Add(JsonObject);
   end;
 end;

   JsonStr := JsonObject.ToString;
   Memo.Lines.Text := JsonStr;


   qryGenel.SQL.Text := 'Insert Into testCheckLists (Deger) values (:Deger)';
   qryGenel.Parameters.ParamByName('Deger').Value := JsonStr; // JsonStr UnicodeString olarak saklanıyor
   qryGenel.ExecSQL;

 finally
   JsonObject.Free;
 end;
end;
Cevapla
#2
(02-11-2023, Saat: 10:12)kajmerantime Adlı Kullanıcıdan Alıntı: Merhaba, iyi forumlar. Delphi Vcl'de bir cxChecklistbox içine eklediğim itemlerden seçili olanları jsonobject içerisinde bool olarak tutup veritabanına kaydediyorum. Ben veritabanıma sadece key değerim gelsin istiyorum. Yani sadece Items.Name'i kaydetmek istiyorum.

Örnek kayıt : {"KUMAŞ":true,"İPLİK":true}

Benim istediğim kayıt : {"KUMAŞ","İPLİK"}

Böyle bir şey mümkün mü? Yardımcı olursanız çok sevinirim. Teşekkür ederim şimdiden  Shy
procedure Ttest.btnKaydetClick(Sender: TObject);
var
 JsonObject: TJSONObject;
 JsonObject2: TJSONObject;
 JsonArray: TJsonArray;
 JsonItem: TJSONBool;
 i: Integer;
 JsonStr: string;
begin
 JsonObject := TJSONObject.Create;

                  //obje>array>obje
 try
 for i := 0 to clbTurler.Items.Count - 1 do
 begin
   if clbTurler.Items[i].Checked then
   begin
     JsonObject.AddPair((clbTurler.Items[i].Text), TJSONTrue.Create);
     JsonArray.Add(JsonObject);
   end;
 end;

   JsonStr := JsonObject.ToString;
   Memo.Lines.Text := JsonStr;


   qryGenel.SQL.Text := 'Insert Into testCheckLists (Deger) values (:Deger)';
   qryGenel.Parameters.ParamByName('Deger').Value := JsonStr; // JsonStr UnicodeString olarak saklanıyor
   qryGenel.ExecSQL;

 finally
   JsonObject.Free;
 end;
end;

Merhabalar,

Hangi veri tabanı kullandığınızı bilmiyorum ama, MySQL 8 ile birlikte JSON desteği mevcut.
https://dev.mysql.com/doc/refman/8.0/en/json.html

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#3
(02-11-2023, Saat: 10:12)kajmerantime Adlı Kullanıcıdan Alıntı: Merhaba, iyi forumlar. Delphi Vcl'de bir cxChecklistbox içine eklediğim itemlerden seçili olanları jsonobject içerisinde bool olarak tutup veritabanına kaydediyorum. Ben veritabanıma sadece key değerim gelsin istiyorum. Yani sadece Items.Name'i kaydetmek istiyorum.

Örnek kayıt : {"KUMAŞ":true,"İPLİK":true}

Benim istediğim kayıt : {"KUMAŞ","İPLİK"}

Böyle bir şey mümkün mü? Yardımcı olursanız çok sevinirim. Teşekkür ederim şimdiden  Shy
procedure Ttest.btnKaydetClick(Sender: TObject);
var
 JsonObject: TJSONObject;
 JsonObject2: TJSONObject;
 JsonArray: TJsonArray;
 JsonItem: TJSONBool;
 i: Integer;
 JsonStr: string;
begin
 JsonObject := TJSONObject.Create;

                  //obje>array>obje
 try
 for i := 0 to clbTurler.Items.Count - 1 do
 begin
   if clbTurler.Items[i].Checked then
   begin
     JsonObject.AddPair((clbTurler.Items[i].Text), TJSONTrue.Create);
     JsonArray.Add(JsonObject);
   end;
 end;

   JsonStr := JsonObject.ToString;
   Memo.Lines.Text := JsonStr;


   qryGenel.SQL.Text := 'Insert Into testCheckLists (Deger) values (:Deger)';
   qryGenel.Parameters.ParamByName('Deger').Value := JsonStr; // JsonStr UnicodeString olarak saklanıyor
   qryGenel.ExecSQL;

 finally
   JsonObject.Free;
 end;
end;


daha detaylısı vardır belki ama ilk aklıma gelen replace :Smile

 
Memo.lines.text  := StringReplace(Memo.lines.text,':true',[RfReplaceALL]);

Memo.Lines.Text := StringReplace(Memo.Lines.Text,':false',[RfReplaceALL]);

gibisinden çoğaltabilirsin
Cevapla
#4
   

Bilmem anlatabildim mi?  Cool
Begin : = end / 2;
Cevapla
#5
(02-11-2023, Saat: 10:12)kajmerantime Adlı Kullanıcıdan Alıntı: Merhaba, iyi forumlar. Delphi Vcl'de bir cxChecklistbox içine eklediğim itemlerden seçili olanları jsonobject içerisinde bool olarak tutup veritabanına kaydediyorum. Ben veritabanıma sadece key değerim gelsin istiyorum. Yani sadece Items.Name'i kaydetmek istiyorum.

Örnek kayıt : {"KUMAŞ":true,"İPLİK":true}

Benim istediğim kayıt : {"KUMAŞ","İPLİK"}

Böyle bir şey mümkün mü? Yardımcı olursanız çok sevinirim. Teşekkür ederim şimdiden  Shy
procedure Ttest.btnKaydetClick(Sender: TObject);
var
 JsonObject: TJSONObject;
 JsonObject2: TJSONObject;
 JsonArray: TJsonArray;
 JsonItem: TJSONBool;
 i: Integer;
 JsonStr: string;
begin
 JsonObject := TJSONObject.Create;

                  //obje>array>obje
 try
 for i := 0 to clbTurler.Items.Count - 1 do
 begin
   if clbTurler.Items[i].Checked then
   begin
     JsonObject.AddPair((clbTurler.Items[i].Text), TJSONTrue.Create);
     JsonArray.Add(JsonObject);
   end;
 end;

   JsonStr := JsonObject.ToString;
   Memo.Lines.Text := JsonStr;


   qryGenel.SQL.Text := 'Insert Into testCheckLists (Deger) values (:Deger)';
   qryGenel.Parameters.ParamByName('Deger').Value := JsonStr; // JsonStr UnicodeString olarak saklanıyor
   qryGenel.ExecSQL;

 finally
   JsonObject.Free;
 end;
end;

Merhabalar,

Gibi bir yapı ile...

{
  "malzemeler": [
   
      {
        "malzeme_adi": "KUMAŞ",
        "durum": 0
      },
      {
        "malzeme_adi": "İPLİK",
        "durum": 0
      }
  
  ]
}

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#6
Şöyle de olabilir.
{
   "secili": ["KUMAŞ", "İPLİK"]
}
Yada
["KUMAŞ", "İPLİK"]
Begin : = end / 2;
Cevapla
#7
(02-11-2023, Saat: 17:26)hi_selamlar Adlı Kullanıcıdan Alıntı:
(02-11-2023, Saat: 10:12)kajmerantime Adlı Kullanıcıdan Alıntı: Merhaba, iyi forumlar. Delphi Vcl'de bir cxChecklistbox içine eklediğim itemlerden seçili olanları jsonobject içerisinde bool olarak tutup veritabanına kaydediyorum. Ben veritabanıma sadece key değerim gelsin istiyorum. Yani sadece Items.Name'i kaydetmek istiyorum.

Örnek kayıt : {"KUMAŞ":true,"İPLİK":true}

Benim istediğim kayıt : {"KUMAŞ","İPLİK"}

Böyle bir şey mümkün mü? Yardımcı olursanız çok sevinirim. Teşekkür ederim şimdiden  Shy
procedure Ttest.btnKaydetClick(Sender: TObject);
var
 JsonObject: TJSONObject;
 JsonObject2: TJSONObject;
 JsonArray: TJsonArray;
 JsonItem: TJSONBool;
 i: Integer;
 JsonStr: string;
begin
 JsonObject := TJSONObject.Create;

                  //obje>array>obje
 try
 for i := 0 to clbTurler.Items.Count - 1 do
 begin
   if clbTurler.Items[i].Checked then
   begin
     JsonObject.AddPair((clbTurler.Items[i].Text), TJSONTrue.Create);
     JsonArray.Add(JsonObject);
   end;
 end;

   JsonStr := JsonObject.ToString;
   Memo.Lines.Text := JsonStr;


   qryGenel.SQL.Text := 'Insert Into testCheckLists (Deger) values (:Deger)';
   qryGenel.Parameters.ParamByName('Deger').Value := JsonStr; // JsonStr UnicodeString olarak saklanıyor
   qryGenel.ExecSQL;

 finally
   JsonObject.Free;
 end;
end;

Merhabalar,

Gibi bir yapı ile...

{
  "malzemeler": [
   
      {
        "malzeme_adi": "KUMAŞ",
        "durum": 0
      },
      {
        "malzeme_adi": "İPLİK",
        "durum": 0
      }
  
  ]
}

Kolay gelsin.



procedure Ttest.btnKaydetClick(Sender: TObject);
var
 JsonObject: TJSONObject;
 JsonArray: TJsonArray;
 i: Integer;
 JsonStr: string;
 JsonKeys: TStringList;
begin
 JsonObject := TJSONObject.Create;
 JsonKeys := TStringlist.Create;
 JsonArray := TJsonArray.Create;

 try
   for i := 0 to clbTurler.Items.Count - 1 do
     begin
       if clbTurler.Items[i].Checked then
         begin
           JsonObject.AddPair((clbTurler.Items[i].Text), TJSONTrue.Create);
           JsonArray.Add(clbTurler.Items[i].Text);

           JsonKeys.Add(clbTurler.Items[i].Text);
         end;
   end;

   JsonStr := JsonArray.ToString;
   Memo.Lines.Text := JsonStr;

   // JSON veriyi doğrudan UnicodeString'e dönüştür
   qryGenel.SQL.Text := 'Insert Into testCheckLists (Deger) values (:Deger)';
   qryGenel.Parameters.ParamByName('Deger').Value := JsonStr; // JsonStr UnicodeString olarak saklanıyor
   qryGenel.ExecSQL;

 finally
   JsonObject.Free;
 end;
end;
İlgilenen arkadaşlar için şu şekilde yaptım.

Örnek veritabanı kayıtı şu şekilde: ["KUMAŞ","İPLİK"]

Tekrardan teşekkürlerrr.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  JSON DataSet Serialize for Unidac Halil Han BADEM 2 532 08-11-2023, Saat: 16:53
Son Yorum: Halil Han BADEM
  JSon Format m_ekici 7 1.015 02-10-2023, Saat: 09:24
Son Yorum: yhackup
  RESTRequest Nesnesinde Body içinde JSON Gönderme Hk. pro_imaj 2 625 04-06-2023, Saat: 00:47
Son Yorum: pro_imaj
Exclamation delphi json binance uygulaması yardım fix1tr 7 1.668 31-03-2023, Saat: 10:48
Son Yorum: fix1tr
  REST.Json, TJSon.JsonToObject sorunsalı Gürcan 15 10.604 08-12-2022, Saat: 17:01
Son Yorum: 3ddark



Konuyu Okuyanlar: 1 Ziyaretçi