मैं वर्तमान में अपने एंड्रॉइड एप्लिकेशन के लिए Sugar ORM और Android Async Http Client का उपयोग कर रहा हूं।चीनी ओआरएम डेटाबेस में डेटा को सहेज नहीं रहा है
मैंने शुगर ओआरएम के दस्तावेज़ीकरण के माध्यम से पढ़ा और वास्तव में वहां क्या लिखा है। मेरा एचटीपी क्लाइंट सिंगलटन पैटर्न का उपयोग कर रहा है और कुछ एपीआई को कॉल करने के तरीकों को प्रदान करता है।
अब इसके बारे में बुरा हिस्सा आता है। मैं अपने डेटाबेस में लगातार डेटा को सहेजने में सक्षम नहीं हूं जो चीनी ओआरएम द्वारा बनाया गया है। यहाँ विधि है, कि एक API बुला रहा है:
D/Sugar: Fetching properties
I/Sugar: Markets saved : 3
I/Sugar: Markets saved : 5
I/RestClient: The market database list has the size of:0
इसके अलावा, मैं stackoverflow पर यहां चीनी ORM टैग पर एक दृष्टि डाली, लेकिन कोई जवाब:
public void getAvailableMarkets(final Context context, final MarketAdapter adapter) {
String url = BASE_URL.concat("/markets.json");
client.addHeader("Content-Type", "application/json");
client.addHeader("Accept", "application/json");
client.get(context, url, null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
Log.i(TAG, "Fetched available markets from server: " + response.toString());
Result<Markets> productResult = new Result<Markets>();
productResult.setResults(new Gson().<ArrayList<Markets>>fromJson(response.toString(),
new TypeToken<ArrayList<Markets>>() {
}.getType()));
ArrayList<Markets> marketsArrayList = productResult.getResults();
// This lines tells me that there are no entries in the database
List<Markets> marketsInDb = Markets.listAll(Markets.class);
if(marketsInDb.size() < marketsArrayList.size() ||
marketsInDb.size() > marketsArrayList.size()) {
Markets.deleteAll(Markets.class);
for(Markets m : marketsArrayList) {
Markets market = new Markets(m.getId(), m.getName(), m.getChainId(), m.getLat(),
m.getLng(), m.getBusinessHourId(), m.getCountry(), m.getZip(), m.getCity(),
m.getStreet(), m.getPhoto(), m.getIcon(), m.getUrl());
market.save();
adapter.add(market);
}
adapter.notifyDataSetChanged();
}
List<Markets> market = Markets.listAll(Markets.class);
// This lines proves that Sugar ORM is not saving the entries
Log.i(TAG, "The market database list has the size of:" + market.size());
}
});
}
यह वही है Logcat मुद्रण है या प्रश्न मुझे उस समस्या को हल करने के बारे में संकेत दे सकते हैं। मैं एंड्रॉइड पारिस्थितिकी तंत्र के लिए नौसिखिया हूं और इस समस्या को हल करने के लिए आप लोगों की किसी भी मदद से प्यार करूंगा। अग्रिम धन्यवाद
आप सही हैं। मैंने थोड़ी देर पहले इस मुद्दे को हल किया लेकिन इस धागे के समाधान को जोड़ना भूल गया। शुगरोरम के जिथब पर समस्या साइट है: https://github.com/satyan/sugar/issues/171 – Superbyte
तो हम आईडी को स्वयं नियंत्रित नहीं कर सकते हैं? दुर्भाग्य से –
@DeanWild नहीं। चूंकि इस प्रश्न में 2500 से अधिक दृश्य हैं, मैं आपको लोगों को बताना चाहता था कि मैंने SQLite और SugarORM से [Realm.io] (https://realm.io/docs/java/latest/) पर स्विच किया है और मुझे यह कहना है मेरे लिए बहुत अच्छा विकल्प रहा है। दायरे एक ऑब्जेक्ट उन्मुख डेटाबेस है और आप इसे एंड्रॉइड और आईओएस विकास के लिए भी उपयोग कर सकते हैं। – Superbyte