a awasi
a awasi

Reputation: 71

save text file in sqlite android

I want to save text file in sqlite android but it is giving an error android.database.sqlite.SQLiteConstraintException: NOT NULL constraint failed: at line long result = db.insert(TABLE_NAME,null,cv);.

@Override
public void onCreate(SQLiteDatabase db) {
    String create_table = "CREATE TABLE " + TABLE_NAME + "( "
            + "ID INTEGER PRIMARY KEY ,"
            + POSITION + " TEXT NOT NULL, "
            + TXT_FILE + " BLOB NOT NULL, "
            + _ID + " TEXT NOT NULL)";


    db.execSQL(create_table);

}

 public boolean add_txt_file(String id, byte[] txt_file) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(_ID,id);
        cv.put(TXT_FILE,txt_file);
        long result = db.insert(TABLE_NAME,null,cv);
        if (result == -1){
            return false;
        } else {
            return true;
        }
    }

     boolean save_txt_file = db.add_txt_file(id,
                       readFile(path));
     if (save_txt_file){
         Toast.makeText(this, "saved successfully", Toast.LENGTH_SHORT).show();
     } else {
         Toast.makeText(this, "failed", Toast.LENGTH_SHORT).show();
                                }

private byte[] readFile(String file) {
    ByteArrayOutputStream bos = null;
    try {
        File f = new File(Environment.getExternalStorageDirectory(),file);
        FileInputStream fis = new FileInputStream(f);
        byte[] buffer = new byte[1024];
        bos = new ByteArrayOutputStream();
        for (int len; (len = fis.read(buffer)) != -1;) {
            bos.write(buffer, 0, len);
        }
    } catch (FileNotFoundException e) {
        Log.e("TAG","error " + e.getMessage());
    } catch (IOException e2) {
        System.err.println(e2.getMessage());
    }
    return bos != null ? bos.toByteArray() : null;
}

The path gives this in log Download/Link_on.txt and the readFile(path) returns [49, 10, 48, 48, 58, 48...... but it is still failing to save the text file in db. Thanks for the help.

Upvotes: 1

Views: 505

Answers (1)

forpas
forpas

Reputation: 164069

In the CREATE statement of the table you have defined the column POSITION as NOT NULL, but in the method add_txt_file() you don't supply a value.

Add something like this line:

cv.put(POSITION, "some value");

Upvotes: 1

Related Questions