まず、SQLステートメントがあります
private static final String DATABASE_CREATE_BADGES =
"create table if not exists badges (id integer primary key autoincrement, "
+ "name VARCHAR, description VARCHAR, image_url VARCHAR, club_id VARCHAR, created_at VARCHAR);";
次に、これが作成されていることを確認します。
@Override
public void onCreate(SQLiteDatabase db)
{
try {
Log.i("execSQL", "Creating badges");
db.execSQL(DATABASE_CREATE_BADGES);
} catch (SQLException e) {
e.printStackTrace();
}
}
次に、メソッドを呼び出すときに値を指定する保存メソッドがあります。Log,i は有効な文字列を示しています。
//---updates a badge record---
public boolean updateBadgesRecord(long rowId, String id, String name, String description, String image_url, String club_id, String created_at)
{
Log.i("image_url in updateBadgesRecord", image_url);
ContentValues args = new ContentValues();
if(id != null){
args.put(KEY_BADGES_ID, id);
}
if(name != null){
args.put(KEY_BADGES_NAME, name);
}
if(description != null){
args.put(KEY_BADGES_DESCRIPTION, description);
}
if(image_url != null){
args.put(KEY_BADGES_IMAGEURL, image_url);
}
if(club_id != null){
args.put(KEY_BADGES_CLUBID, club_id);
}
if(created_at != null){
args.put(KEY_BADGES_CREATEDAT, created_at);
}
return db.update(DATABASE_TABLE_BADGES, args, KEY_ROWID + "=" + rowId, null) > 0;
}
これらのメソッドを呼び出す前に、次の方法でデータベースを開いています。
db = DBHelper.getWritableDatabase();
私はそれが節約されていると思います。これは私がデータを取得しようとしている方法です:
public Cursor getBadgeRecord(long rowId) throws SQLException
{
SQLiteDatabase db = DBHelper.getReadableDatabase();
Cursor mCursor =
db.query(true, DATABASE_TABLE_BADGES, new String[] {KEY_ROWID,
KEY_BADGES_ID, KEY_BADGES_NAME, KEY_BADGES_DESCRIPTION, KEY_BADGES_IMAGEURL, KEY_BADGES_CLUBID, KEY_BADGES_CREATEDAT},
KEY_ROWID + "=" + rowId, null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
ここでメソッドを呼び出していますが、prinln は null を返します。
public void activateBadgeList(){
for(int i = 0; i < badgeButtons.length; i++){
if(true){
badgeButtons[i].setActivated(true);
badgeButtons[i].setAlpha(1.0f);
db.open();
Cursor c = db.getBadgeRecord(i);
String image_url = null;
if (c.moveToFirst()){
while(!c.isAfterLast()){
image_url = c.getString(c.getColumnIndex("image_url"));
// do what ever you want here
c.moveToNext();
}
}
c.close();
if(image_url != null){
Log.i("image url", image_url);
} else {
Log.e("image url", "image url is null");
}
badgeButtons[i] = UrlImageViewHelper.setUrlDrawable(badgeButtons[i], image_url);
db.close();
}
}
だから私は何か間違ったことをしているに違いない.しかし、それは何ですか?