1

クラスカテゴリがあります

  @DatabaseTable(tableName = "categories")
public class Category {
    public final static String CATEGORY_TITLE_FIELD_NAME  = "title";
    @SerializedName("id")
    @DatabaseField(id = true)
    int id;
    @SerializedName("title")
    @DatabaseField(dataType = DataType.STRING, columnName = CATEGORY_TITLE_FIELD_NAME)
    String title;
    // need for ORMlite
    public Category()
    {}
    public Category (int id, String title)
    {
        this.id = id;
        this.title = title;
    }
    public int getCategoryId() 
    {

         return this.id;
    }

    public String getCategoryTitle() 
    {
         return this.title;
    }

    public void setCategoryId(int id)
    {
         this.id = id;
    }

    public void setCategoryTitle(String title)
    {
         this.title = title;
    }

    @Override
    public String toString()
    {       
    return "{title="+title +" "+"id="+id+"}";   
    }

}

そして、JSON からデータを入れて、ORMLite に保存したいと考えています。これは私がそれを行う方法です:

DatabaseHandler db = new DatabaseHandler(getApplicationContext());
JSONObject data = json.getJSONObject(KEY_DATA);
// getting categories
JSONArray categories = new JSONArray();
categories = data.getJSONArray(KEY_CATEGORIES);
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(categories.toString()).getAsJsonArray();
Type listType = new TypeToken<List<Category>>() {}.getType();
List<Category> tasks = new ArrayList<Category>();
tasks = gson.fromJson(array.toString(), listType);
RuntimeExceptionDao<Category, Integer> simpleDao = getHelper1().getSimpleCategoryDao();
Dao<Category, Integer> categoryDao = getHelper1().getCategoryDao();
saveContacts(tasks);
List<Category> list = categoryDao.queryForAll();
Log.i("categoryDAO",list.toString());

そして、これはデータ保存のための saveContacts() メソッドです:

 public void saveContacts(List<Category> contacts) throws SQLException
    {
        OrmLiteSqliteOpenHelper dbHelper= DatabaseHandler.getInstance(_context);
        Dao<Category, Integer> daoContact=dbHelper.getDao(Category.class);
        for (Category contact : contacts) {
            daoContact.create(contact);
        }
        dbHelper.close();
    }

しかし、次のような例外があります。

 FATAL EXCEPTION: main
java.lang.NullPointerException
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
at com.j256.ormlite.android.AndroidConnectionSource.getReadWriteConnection(AndroidConnectionSource.java:63)
    at com.j256.ormlite.dao.BaseDaoImpl.create(BaseDaoImpl.java:304)
    at com.assignmentexpert.LoginActivity.saveContacts(LoginActivity.java:192)
    at com.assignmentexpert.LoginActivity$1.onClick(LoginActivity.java:108)
    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)

私が間違っていることを教えてください。

4

1 に答える 1

0

OrmLiteSqliteOpenHelper から拡張された DatabaseHandler にコンテキストを渡す問題が解決しました。

于 2012-08-14T08:59:29.690 に答える