2015-01-06 3 views
0

내 응용 프로그램에서 데이터를 데이터베이스에 저장하려고합니다. 여기 sqlite 테이블에서 값을 가져올 수 없습니다

public class UserSqliteHelper extends SQLiteOpenHelper { 
    private final String LOGCAT = "JBF/SQLite"; 
    private static final int DATABASE_VERSION = 1; 

    // Database Name 
    private static final String DATABASE_NAME = "jbfjsonEntityDB"; 

    private static final String TABLE_NAME = "jbfjsonEntity"; 

    private static final String KEY_JSON = "json"; 
    private static final String KEY_URL_PATH = "url_path"; 
    private static final String KEY_TIME = "added_on"; 

    public UserSqliteHelper(Context context) { 
     super(context, "dictionarysqlitehelper.db", null, 1); 
     Log.d(LOGCAT, "Created"); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_NAME + "(" 
       + KEY_JSON + " TEXT, " 
       + KEY_TIME + " TIMESTAMP NOT NULL DEFAULT current_timestamp, " 
       + KEY_URL_PATH + " TEXT)"; 
     db.execSQL(CREATE_CONTACTS_TABLE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     String query = "DROP TABLE IF EXISTS " + TABLE_NAME ; 
     db.execSQL(query); onCreate(db); 
    } 

    public void addJsonEntity(JsonEntity jsonEntity) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_JSON, jsonEntity.getJson()); 
     values.put(KEY_URL_PATH, jsonEntity.getUrl_path()); 

     // Inserting Row 
     db.insert(TABLE_NAME, null, values); 
     db.close(); 
    } 

    public JSONObject getJsonByUrl(String url) { 
     String json = ""; 
     SQLiteDatabase db = this.getReadableDatabase(); 

     try { 
//   Cursor c = db.query(TABLE_NAME, null, KEY_URL_PATH + "=?", new String[]{url}, null, null, null); 
      String selectQuery = "SELECT * FROM " + TABLE_NAME + " where " + KEY_URL_PATH + "='"+url+"'"; 
      Cursor c = db.rawQuery(selectQuery, null); 

      if (c == null) { 
       return null; 
      } else { 
       c.moveToFirst(); 
       json =c.getString(c.getColumnIndex(KEY_JSON)); 
       if (json != null) { 
        return new JSONObject(json); 
       } else { 
        return null; 
       } 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 
} 

내 활동에서 호출 SQLiteHelper

의 내 코드는 항상이 오류

android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 
있어

UserSqliteHelper sqliteHelper = new UserSqliteHelper(SplashActivity.this); 
sqliteHelper.getWritableDatabase(); 
sqliteHelper.addJsonEntity(new JsonEntity(STRING_CONFIGS_URL,response.toString())); 
System.out.println("json ==== "+sqliteHelper.getJsonByUrl(GET_USER_INFO_URL)); 

은 누구도 날 내가 무슨 짓을했는지를 알 수 여기 잘못 들었어. 왜 데이터베이스 값을 가져올 수 없습니까? 대신 C의

답변

0

== null의 데이터를 일치하지 않습니다 c.getColumnCount의 == 0

1

쿼리를 시도합니다. moveToFirst()이 실패하고 커서가 유효한 행을 가리 키지 않습니다. moveToFirst()이 성공했는지 확인해야하며 부울을 반환합니다.

다른 키로 데이터를 저장하고 검색하기 때문에 데이터가 일치하지 않는 이유는 STRING_CONFIGS_URLGET_USER_INFO_URL입니다.

관련 문제