0
json形式でサーバから取得されたデータ。フェッチされたデータはarraylistsに格納されます。 arraylistsはループされ、データベースに格納されます。データは取得され、配列リストに格納されます。配列リストは、それらを出力することで確認しました。何が奇妙なのinitメソッドでgetNumberOfEntries
メソッドを返す26 getNumberOfEntries
私はinit()
を呼び出した後呼び出す場合0を返します。Android sqliteデータベースにデータが挿入されていない
これは、これが呼び出されるinsertCourses方法である
private void init()
{
db = dbHelper.getWritableDatabase();
dbHelper.dropTable(db);
db = dbHelper.getWritableDatabase();
dbHelper.createTable(db);
final SQLiteDatabase db;
final long numEntries;
db = dbHelper.getWritableDatabase();
numEntries = dbHelper.getNumberOfEntries(db);
if(numEntries == 0)
{
db.beginTransaction();
try
{
for (int i=0; i < courseNameArrayList.size(); i++)
{
dbHelper.insertCourses(db,
courseTermArrayList.get(i),
courseNumberArrayList.get(i),
courseNameArrayList.get(i),
courseDescriptionArrayList.get(i));
}
}
catch (Exception e)
{
Log.d(TAG, "init exception");
Log.d(TAG, e.getMessage());
}
finally
{
Log.d(TAG, "In Finally init");
final long numEntries2 = dbHelper.getNumberOfEntries(db);
Log.d(TAG, "init finally num entries: " + numEntries2); // HERE IT LOGS AS 26 ENTRIES
db.endTransaction();
}
}
db.close();
}
のArrayListをループする方法です。私はこの問題は、このコードであると信じて
public void insertCourses(final SQLiteDatabase db,
final String term,
final String courseNumber,
final String courseName,
final String courseDescription)
{
Log.d(TAG, "Inserting Courses" + " " + term + " " + courseNumber + " " + courseName +
" " + courseDescription);
final ContentValues contentValues;
contentValues = new ContentValues();
contentValues.put(COL_TERM, term);
contentValues.put(COL_COURSE_NUM, courseNumber);
contentValues.put(COL_COURSE_NAME, courseName);
contentValues.put(COL_COURSE_DESCRIPTION, courseDescription);
try
{
Log.d(TAG, "In insertCourses try");
db.insertOrThrow(TABLE_NAME, null, contentValues);
}
catch (Exception e)
{
Log.d(TAG, "In insertCourses catch");
String exception = e.getMessage();
Log.d(TAG, exception);
}
}
getNumberOfEntries方法
public long getNumberOfEntries(final SQLiteDatabase db)
{
Log.d(TAG, "Get Number of Entries");
final long numEntries;
numEntries = DatabaseUtils.queryNumEntries(db, TABLE_NAME);
return (numEntries);
}
表構造
private static final String CREATE_COURSE_INFO_TABLE = "CREATE TABLE IF NOT EXISTS " +
TABLE_NAME + " (" +
COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL_TERM + " TEXT NOT NULL, " +
COL_COURSE_NUM + " TEXT NOT NULL, " +
COL_COURSE_NAME + " TEXT NOT NULL, " +
COL_COURSE_DESCRIPTION + " TEXT NOT NULL)";
logcatをお持ちでしたか?警告メッセージはあなたのエラーです –
申し訳ありませんが、私は完全に理解していません。出力に警告があるかどうか尋ねていますか?いいえ、私には何の警告もありませんでした。 – noname