Я получаю следующее сообщение об ошибке, когда я пытаюсь выполнить операции CRUD на моей БД с помощью sugarorm:Не получив такую ошибки таблицы с Sugarorm 1.4 в андроиде
E/SQLiteLog: (1) no such table: CONTACT D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.sinha.abhishek.demoapp, PID: 2133
android.database.sqlite.SQLiteException: no such table: CONTACT (code 1): , while compiling: SELECT * FROM CONTACT WHERE id=? LIMIT 1
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1163)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1034)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1240)
at com.orm.SugarRecord.find(SugarRecord.java:192)
at com.orm.SugarRecord.findById(SugarRecord.java:102)
at com.example.sinha.abhishek.demoapp.Contact.<init>(Contact.java:31)
at com.example.sinha.abhishek.demoapp.MainActivity$1.onClick(MainActivity.java:48)
at android.view.View.performClick(View.java:4785)
at android.view.View$PerformClick.run(View.java:19888)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5276)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)
Может кто-нибудь, пожалуйста, руководство, что может быть вероятной причина для этого и как она может быть исправлена.
Это мой POJO класс:
public class Contact extends SugarRecord{
int contactid;
String firstName;
String lastName;
int age;
String address;
String phone;
public Contact(){
super();
}
public Contact(int contactid, String firstName, String lastName, int age, String address, String phone){
this.contactid = contactid;
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.address = address;
this.phone= phone;
}
}
Это мой андроид файл манифеста:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sinha.abhishek.demoapp">
<application
android:name="com.orm.SugarApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="DATABASE"
android:value="hollywoodcontacts.db" />
<meta-data
android:name="VERSION"
android:value="2" />
<meta-data
android:name="QUERY_LOG"
android:value="true" />
<meta-data
android:name="DOMAIN_PACKAGE_NAME"
android:value="com.example.sinha.abhishek.demoapp" />
</application>
</manifest>
Это мой пример кода операции CRUD написано в основной деятельности:
Contact con = new Contact(101 ,"Abcd","Xyz",22,"myaddress", "9849848943");
con.save();
Я уже пробовал такие опции, как: 1. Отключение мгновенного запуска 2. Contact.findById (Contact.class, (long) 1);
, но ни один из них не работал для меня.
Причина в том, что в базе данных нет таблицы с именем ** CONTACT **. Вам также сообщается, что ошибка произошла при компиляции инструкции SELECT. Если у вас есть жесткий код ** CONTACT ** в любом месте, то, возможно, это должно быть ** Контакт ** (имена таблиц чувствительны к регистру, как имена столбцов). Я предполагаю, что выбор является частью проверки того, что контакт (по id) еще не существует. – MikeT