آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

hamcalas  10 سال پیش  10 سال پیش
0 0

سلام

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

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

اطلاعاتی که از 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 + "')");

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

 

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

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();
0 0
احسنت خیلی ممنمون (10 سال پیش)

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