بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در ذخیره مخاطبین با بیش از یک شماره در دیتابیس

مدیریت گفتگو
hamcalas 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام

می خواهم مخاطبین را در دیتابیس برنامه ذخیره کنم

مشکلم در افرادی است که بیش از یک شماره دارند

اطلاعاتی که از Contacts اندروید می گیرم به شکل زیر هست می بینید که اگر فرد دو شماره داشته باشه دوبار تکرار میشه

persone A id =1 number =024

persone A id =1 number =0912

من اگر در دیتابیس یک جدول به شکل زیر داشته باشم :

id      name     phone1    phone2     phone3   

چطور می توانم اطلاعات بالا را در دیتابیس ذخیره کنم ؟

////

برای گرفتن لیست شماره از به شکل زیر عمل می کنم :

     public void readContacts() {
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);

if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
System.out.println("name : " + name + ", ID : " + id);

// get the phone number
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{ id }, null);
while (pCur.moveToNext()) {
String phone = pCur.getString(
pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
System.out.println("phone" + phone);
Log.i("LOG", "id= " + id + " " + "phone " + phone);
}
pCur.close();


}
}
}
}

 و برای ذخیره در دیتابیس از کد زیر :

 G.database.execSQL("INSERT INTO contacts (word,name,phone1,phone2)  VALUES ('" + id + "','" + name + "','" + phone1 + "','" + phone2 + "')");

اگر بزرگواری کنید راهنمایی کنید ممنون میشم

 

نظرات

MOJTABA 10 سال پیش
ببخشید اطلاعاتی که از Contact میگیرید به فرمت دیگه ای نیست؟
aliakbar333 10 سال پیش
واسه هر رکورد دیتابی علاوه بر id یه کلید دیگه تعریف کن . راه دومش اینه که از 2 جدول استفاده کنی مثلا جدول دوم باشه واسه ذخیره شماره ها که ممکنه 1 یا 2 یا بشتر باشه
hamcalas 10 سال پیش
ایجاد دو رکورد برای یا کلید دیگر فکر نمی کنم اصولی باشد ، این طور نیست؟
aliakbar333 10 سال پیش
متوجه نشدم . منظورتون از ایجاد دو رکورد چیه؟ اگه منظورتون راه اول پیشنهادی منه باید بگم که منظور واضحه یعنی علاوه بر id میشه یکی دیگه تعیین کنی که واسه دیتابیس های نه چندان بزرگ گرچه شاید از نظر شما و کلن اصولی نباشه ولی خیلی ایرادی نداره و مشکلی هم ایجاد نمیشه. ضمنا راه بهتر ایجاد دیتابیس با 2 یا تعداد بیشتر جدول هست که افزونگی هم از بین میره.
hamcalas 10 سال پیش
ممنون دوستان و aliakbar333 بزرگوار ، ببخشید نتوانستم منظورم را خوب برسانم ، یک چیزی مایه های پاسخ آقای عزیزی فکر می کنم برای این مورد مناسب باشد ، از ایشان و شما تشکر می کنم .

پاسخ‌ها 1

عزیزی 10 سال پیش

Integer[] phone = new Integer[pCur.getCount()];
int i=0;

pCur.moveToFirst();
while (pCur.moveToNext()) {
phone[i] = pCur.getString(
pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
i++;
}
if (i == 1){
phone1 = phone[0];
}
else (i >= 2){
phone2 = phone[1];
}

G.database.execSQL("INSERT INTO contacts (word,name,phone1,phone2)
VALUES ('" + id + "','" + name + "','" + phone1 + "','" + phone2 + "')");
pCur.close();

نظرات

hamcalas 10 سال پیش
احسنت خیلی ممنمون

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .