2012-08-22 58 views
0

下面幾行我創建一個圖像路徑和PTH存儲在sqqlite DB:錯誤插入記錄的SQLite數據庫

private void commitToDB() { 
    imgTitle = "img"; 
    GenerateRandom gr = new GenerateRandom(); 
    imgTitle +=gr.getRand()+".jpeg"; 

    db = mpoh.getWritableDatabase(); 
    cv = new ContentValues(); 
    File dir = Environment.getExternalStorageDirectory(); 
    File file = new File(dir,"/DCIM/"+imgTitle); 

    cv.put(imgName, imgTitle); 
    cv.put(path,file.getAbsolutePath()); 
    Toast.makeText(getApplicationContext(),imgTitle, Toast.LENGTH_LONG).show(); 
     long newID = db.insert("MPData", null, cv); 

     if (newID == -1) { 
     Toast.makeText(getBaseContext(), "Error Commiting Record(s)", 
     Toast.LENGTH_SHORT).show(); 
     } else { 
     Toast.makeText(getBaseContext(), "Data Commited Successfully", 
     Toast.LENGTH_SHORT).show(); 
    } 
} 

和我的SQLite數據庫的樣子:

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    db.execSQL(" CREATE TABLE " + MP_TABLE_NAME + " (" + 
      BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      " name TEXT, " + 
      " lat REAL, " + 
      " lng REAL, " + 
      " date TEXT, " + 
      " time TEXT, " + 
      " path TEXT, " + 
      " imgName TEXT " + 
      ");"); 
} 

我的問題是即,收到 「錯誤Commiting記錄(S)」,是因爲NEWID的= -1

 long newID = db.insert("MPData", null, cv); 
     if (newID == -1) 

另外需要注意的是,DB的一個實例是instanti在裏面創造。

任何建議來解決這個問題將受到讚賞。

+0

cv.put(imgName,imgTitle); cv.put(路徑,file.getAbsolutePath()); imgName和path的值是什麼? –

+0

cv.put(path,「」+ file.getAbsolutePath()); –

+0

我fuond如何解決我的問題...我可以將答案郵寄到我的問題......也許我soulion將可幫助他人! – LetsamrIt

回答

0

你需要得到您的錯誤信息,(如並列只是-1)

看到「insertOrThrow」在這裏:Where to get database error information in Android SQLite (e.g. failed insert due to violation of not null)

這樣,至少可以對這個問題深入。

+0

沒有任何錯誤消息除了一個我顯示在Toast上的錯誤消息,如在sqlite中發生的 – LetsamrIt

+0

錯誤,或者檢查logcat以查看是否有任何與sql相關的錯誤。你可能有一個語法錯誤,你不知道 – FaddishWorm