0

次の行で、イメージ パスを作成し、その pth を sqlite DB に保存します。

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 DBは次のようになります。

@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 " +
            ");" );
}

私の問題は、newID= -1 のために「Error Commiting Record(s)」が表示されることです。

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

また、DB のインスタンスは onCreate 内でインスタンス化されることに注意してください。

この問題を解決するための提案をいただければ幸いです。

4

1 に答える 1

0

エラーメッセージを取得する必要があります(-1だけではなく)

ここで「insertOrThrow」を参照してください: Android SQLite でデータベース エラー情報を取得する場所 (たとえば、not null の違反による挿入の失敗)

そうすれば、少なくとも問題を掘り下げることができます。

于 2012-08-22T10:59:01.547 に答える