Android create方法上的ORMLite异常集
数据库和表的创建已成功通过。 DatabaseHandler类的My onCreate():Android create方法上的ORMLite异常集,android,nullpointerexception,ormlite,Android,Nullpointerexception,Ormlite,数据库和表的创建已成功通过。 DatabaseHandler类的My onCreate(): public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Category.class); TableUtils.c
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource)
{
try
{
TableUtils.createTable(connectionSource, Category.class);
TableUtils.createTable(connectionSource, Level.class);
DataParsing a = new DataParsing();
a.fillCategories();
Log.i(DatabaseHandler.class.getName(), "created new entries in onCreate: " );
}
catch (SQLException e){
Log.e(TAG, "error creating DB " + DATABASE_NAME);
throw new RuntimeException(e);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我从web服务获取JSON数据,并用GSON解析它。数据在fillcategories()方法中成功填充类数据。然后我想在saveContacts()方法中将所有数据放入ORMLite数据库:
为什么会发生这种情况?将我的活动的上下文传递给OrmLiteSqliteOpenHelper解决了这个问题。我使用这些类在整个应用程序生命周期中维护对数据库的访问:
public class ApplicationMemory extends Application{
@Override
public void onCreate() {
super.onCreate();
HelperFactory.SetHelper(getApplicationContext());
}
@Override
public void onTerminate() {
HelperFactory.ReleaseHelper();
super.onTerminate();
}
}
及
其中DatabaseHandler-class,它是从OrmLiteSqliteOpenHelper扩展而来,在我的问题中进行了描述。这是DataParsing.java?HelperFactory.GetHelper().getCategoryDao().create(contact)的第61行;主要问题在这里…你应该接受你自己的答案,伙计。
FATAL EXCEPTION: main
java.lang.NullPointerException
at com.library.DataParsing.saveContacts(DataParsing.java:61)
at com.library.DataParsing.fillCategories(DataParsing.java:45)
at com.library.DatabaseHandler.onCreate(DatabaseHandler.java:85)
at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.onCreate(OrmLiteSqliteOpenHelper.java:169)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:126)
at com.j256.ormlite.android.AndroidConnectionSource.getReadWriteConnection(AndroidConnectionSource.java:63)
at com.j256.ormlite.android.AndroidConnectionSource.getReadOnlyConnection(AndroidConnectionSource.java:51)
at com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:202)
at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:155)
at com.j256.ormlite.stmt.StatementExecutor.queryForAll(StatementExecutor.java:113)
at com.j256.ormlite.dao.BaseDaoImpl.queryForAll(BaseDaoImpl.java:237)
at com.assignmentexpert.LoginActivity$1.onClick(LoginActivity.java:97)
at android.view.View.performClick(View.java:2485)
at android.view.View$PerformClick.run(View.java:9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
public class ApplicationMemory extends Application{
@Override
public void onCreate() {
super.onCreate();
HelperFactory.SetHelper(getApplicationContext());
}
@Override
public void onTerminate() {
HelperFactory.ReleaseHelper();
super.onTerminate();
}
}
public class HelperFactory {
private static DatabaseHandler databaseHelper;
public static DatabaseHandler GetHelper(){
return databaseHelper;
}
public static void SetHelper(Context context){
databaseHelper = OpenHelperManager.getHelper(context,DatabaseHandler.class);
}
public static void ReleaseHelper(){
OpenHelperManager.releaseHelper();
databaseHelper = null;
}
}