sqlite شرح - لا يوجد مثل هذا الجدول android_metadata ، ما هي المشكلة؟




database in (7)

أنا استخدم بالفعل على النحو الوارد في هذا الرابط لفترة طويلة ..

كان يعمل .. تحقق من DB الخاص بك مرة أخرى في الجدول الذي تم إنشاؤه أم لا؟

أفضل تثبيت البرنامج المساعد SQLite Manager في فايرفوكس لتشغيل قاعدة البيانات sqlite .. بعد الانتهاء من جميع العمليات المذكورة في نفس الرابط ..

الخروج http://www.devx.com/wireless/Article/40842/1954 .

أنه يحتوي على جميع عمليات قاعدة البيانات.

أقوم بنسخ قاعدة بيانات موجودة مسبقًا إلى /data/data/packagename/databases باستخدام /data/data/packagename/databases برمجية مستقاة من using-your-own-sqlite-database-in-android-applications

بعد النسخ ، أتلقى رسالة السجل التالية عند فتح قاعدة البيانات:

لا يوجد مثل هذا الجدول android_metadata

هل أحتاج إلى إنشاء جدول باسم android_metadata؟ وما هي القيم التي أحتاج إليها إدراجها في جدول قاعدة البيانات هذا

شكرا جزيلا


يبدو أن الروبوت يتطلب لكل قاعدة بيانات أن يكون لديه جدول يسمى android_metadata يتضمن لغة واحدة على الأقل. using-your-own-sqlite-database-in-android-applications مدونة using-your-own-sqlite-database-in-android-applications التي ذكرتها عن كيفية إنشاء الجدول وملئه مسبقًا بإعدادات محلية.

تحقق مما إذا كانت قاعدة البيانات الخاصة بك تحتوي على هذا الجدول وما إذا كان الجدول يحتوي على بعض المحتويات.


في حالتي ، اكتشفت أن هذا الخطأ سيحدث إذا تركت open transaction اليسار.

بعبارة أخرى: إذا نسيت أن commit أو rollback عن معاملة ، في المرة التالية التي تدخل فيها الطلب ، يرتفع هذا الخطأ.


عند نسخ قاعدة البيانات من دليل الأصول الخاصة بك ، على سبيل المثال ، يجب أن يكون لديك جدول android_metadata تم إنشاؤه فيه بالفعل. يجب أن يحتوي هذا الجدول على عمودين:

_id = an integer value
locale = en

استعمال

SQLiteDatabase.openDatabase(dbPath, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.CREATE_IF_NECESSARY);

أو

SQLiteDatabase.openDatabase(dbPath, null,SQLiteDatabase.OPEN_READWRITE);

قد يكون أيضًا أذونات الملفات - رسالة الخطأ مضللة. تحتاج أولاً إلى معرفة معرف المستخدم الخاص بالتطبيق (هذا يفترض أن لديك وصولاً إلى الجذر):

$ adb shell grep <packagename> /data/system/packages.xml

يجب أن يبدو الإخراج:

<package name="com.fsck.k9" codePath="/data/app/com.fsck.k9-1.apk" 
nativeLibraryPath="/data/data/com.fsck.k9/lib" 
flags="0" ft="1306ecac340" it="1306ecac9d2" ut="1306ecac9d2"
version="14001" userId="10002">

userId هنا هو 10002.

ثم إصلاح الأذونات:

$ adb shell chown -R 10002:10002 /data/data/<packagename>

TextView.setTextColor() يأخذ كثافة العمليات int يمثل اللون (على سبيل المثال. 0xFFF5DC49) وليس معرف المورد من ملف xml. في أحد الأنشطة ، يمكنك إجراء ما يلي:

   textView1.setTextColor(getResources().getColor(R.color.mycolor))

خارج النشاط ستحتاج إلى Context سبيل المثال.

   textView1.setTextColor(context.getResources().getColor(R.color.mycolor))






android sqlite