2010-07-17 7 views
1

현재 제 1 번째 Android 앱을 개발 중이며 해결할 수없는 문제가 발생합니다. 3월 7일부터 18일까지 : 41 : 04.414 : ERROR/AndroidRuntime (3480) : 내 자신의 데이터베이스에 데이터를 삽입하려고하면 오류가 java.lang.NullPointerException이ContentValues를 사용하여 저장된 값의 순서가 올바르지 않습니다. 이유는 무엇입니까?

테이블에 삽입 내 코드는 다음과 같습니다

public long createRecord(String created_time, String modified_time, 
     long reading, String unit, String period, String remark) { 

    ContentValues values = new ContentValues(6); 
    values.put(KEY_CREATED_TIME, created_time); 
    values.put(KEY_MODIFIED_TIME, modified_time); //System.out.println(values); 
    values.put(KEY_RECORD, reading); //System.out.println(values); 
    values.put(KEY_UNIT, unit); //System.out.println(values); 
    values.put(KEY_PERIOD, period);// System.out.println(values); 
    values.put(KEY_REMARK, remark); 

    System.out.println(values); 
    return mDb.insert(DATABASE_TABLE, null , values); 

} 

이것은 내 DatabaseHelper 클래스의 인스턴스 인 Adapter 클래스 아래에 있습니다. 내 DatabaseHelper 클래스의 경우 assets 폴더의 데이터베이스를 시스템 데이터베이스 폴더로 복사 할 수 있습니다. 하지만 테이블에 데이터를 만들 수는 없지만 "값"을 인쇄하려고 시도한 결과 다음과 같이 나타났습니다.

created_time = 2010-07-18 03:41:04 remark = on unit = mg/dL reading = 67 period = Before Meal modified_time = 00 : 00 : 00 그것이 어쩔 수없는 방식 이었기 때문에 이것이 문제가 될 것이라고 생각했습니다. 아무도 도와 줄 수 있습니까? 온라인에서 검색했지만이 정보는 그다지 많지 않습니다. 미리 감사드립니다 :)

답변

0

ContentValuesHashMap에 의해 뒷받침되는 주문을 보유하지 않는 이유가 있습니다. 그래서 괜찮습니다.
mDbnull 인 경우 문제가 발생한 것일 수 있습니다 (System.out.println("" + mDb);으로 확인).

Set<Map.Entry<String, Object>> entrySet = null; 
    if (initialValues != null && initialValues.size() > 0) { 
     entrySet = initialValues.valueSet(); 
     Iterator<Map.Entry<String, Object>> entriesIter = entrySet.iterator(); 

는 내가 뭔가 잘못 생각 :

+0

예, "null"을 나타내는 mDb를 확인했습니다. 이 이유를 알 수 있고 어떻게 해결할 수 있습니까? 감사합니다 – Wen

+0

참조를 얻은 곳에서 문제가 생겼습니다 :'SQLiteDatabase mDb = // null here;' – yanchenko

+0

좋아요, mDb = mDbHelper.getWritableDatabase();를 추가했습니다. 이제 코드는 에뮬레이터 모드에서는 제대로 작동하지만 휴대 전화에서는 정상적으로 작동하지 않습니다. 장치에 코드를 실행하면 오류 메시지가 표시됩니다. 07-18 13 : 51 : 49.595 : 오류/데이터베이스 (2022) 삽입 오류 : remark = ol 기간 = 식사 전 modified_time = 00 : 00 : 00 unit = mg/dL 읽기 = 68 created_time = 2010-07-18 13:51:49 07-18 13 : 51 : 49.595 : 오류/데이터베이스 (2022) : android.database.sqlite.SQLiteException : 해당 테이블 없음 : 레코드 :, 컴파일하는 동안 : INSERT INTO 레코드 (remark, period, modified_time, unit, reading, created_time) VALUES (?,?,?,?,?,?); 조언이 있으십니까? – Wen

-1

당신은 어쨌든 다 했지 순서를 기반으로 그것은 SQL 및 처리를 만든 내가의 SQLiteDatabase의 소스 코드를 본 적이 있나요? 또는 순서가 values.Do 많은 당신은 당신이 당신의 데이터베이스 객체가 null 여부를 확인할 수 있습니다 somew

0
if(db!=null){ 
     ContentValues row = new ContentValues(); 
     row.put("rt_id",tid); 
     row.put("rs_id", sid); 
     row.put("rsubject", rsubject); 
     row.put("rdescr",rdescr); 
     row.put("day", day); 
     row.put("month",month); 
     row.put("year",year); 
     row.put("stamp", stamp); 
     row.put("amount",amount); 

     long chk = db.insert("records",null, row); 

     if(chk!=0){ 
      Toast.makeText(myContext, "Record added successfully",Toast.LENGTH_LONG).show(); 
     }else{ 
      Toast.makeText(myContext, "Record added failed...! ",Toast.LENGTH_LONG).show(); 
     } 
     }else{ 
      Toast.makeText(myContext, "could Not connected database..!!! ",Toast.LENGTH_LONG).show(); 
     } 
    }catch(SQLiteException exc){ 
     Toast.makeText(myContext, "Record could not saved...!!! ",Toast.LENGTH_LONG).show(); 
    }finally{ 
     db.close(); 
     } 

찾을 ... 또는 단지에 println it..All 최고의하여 검사를 잘못 때.

관련 문제