How to make AUTO_INCREMENT on Android SQLite database?
android, sqlite
Solution
You don't have to parse anything. If the column was created as `AUTOINCREMENT`, just pass the other values:
db.execSQL("insert into "
+ TABLE_NAME
+ "(contact_id, contact_name, number_type, contact_number, duration, date, current_time, cont) "
+ "values( "+ cId + ", " + cName + ", " + numType + ", "
+ cNum + ", " + dur + ", " + date + ", " + currTime + ", ? )");
By the way, it's always recommended to insert data using the Android's `insert` method:
ContentValues values = new ContentValues();
values.put("contact_id", cId);
values.put("contact_name", cName);
// etc.
db.insert(TABLE_NAME, null, values);
Problem
Hey I want to create a database with an AUTO_INCREMENT column. But I don't know how to parse the value in the method insert. I just don't know what to parse to an AUTO_INCREMENT argument, and I parsed 1 where should be auto_increment, but I know its not that I should parse. Here is the CallDatHelper.java class where I declare the method insert, and the method that creates the database. ``` package com.psyhclo; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteStatement; import android.util.Log; import java.util.ArrayList; import java.util.List; public class CallDataHelper { private static final String DATABASE_NAME = "calls.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "contact_data"; private Context context; private SQLiteDatabase db; public CallDataHelper(Context context) { this.context = context; OpenHelper openHelper = new OpenHelper(this.context); this.db = openHelper.getWritableDatabase(); } public boolean insert(Integer cId, String cName, String numType, String cNum, String dur, String date, String currTime) { this.db.execSQL("insert into " + TABLE_NAME + "(id, contact_id, contact_name, number_type, contact_number, duration, date, current_time, cont) " + "values( ? ," + cId + ", " + cName + ", " + numType + ", " + cNum + ", " + dur + ", " + date + ", " + currTime + ", ? )"); return true; } public void atualiza(String word) { this.db.execSQL("UPDATE words SET cont = cont + 1 WHERE (word= ?)", new String[] { word }); } public void deleteAll() { this.db.delete(TABLE_NAME, null, null); } public boolean select(String wrd) { String word; Cursor cursor = this.db.query(TABLE_NAME, new String[] { "word" }, "word like ?", new String[] { wrd }, null, null, null); if (cursor.moveToFirst()) { do { word = cursor.getString(0); } while (cursor.moveToNext()); } if (cursor != null && !cursor.isClosed()) { cursor.close(); return true; } else { return false; } } public List<String> selectAll() { List<String> list = new ArrayList<String>(); Cursor cursor = this.db.query(TABLE_NAME, new String[] { "word" }, null, null, null, null, "cont desc"); if (cursor.moveToFirst()) { do { list.add(cursor.getString(0).toUpperCase()); } while (cursor.moveToNext()); } if (cursor != null && !cursor.isClosed()) { cursor.close(); } return list; } private static class OpenHelper extends SQLiteOpenHelper { OpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY AUTOINCREMENT, contact_id INTEGER, contact_name VARCHAR(50), number_type VARCHAR(50), contact_number VARCHAR(50), duration TIME, date DATE, current_time TIME, cont INTEGER)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w("RatedCalls Database", "Upgrading database, this will drop tables and recreate."); db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } } } ``` And here is where I call the insert method parsing the data I want to insert. ``` this.dh.insert(1 , 1, contactName, numType, contactNumber, duration, callDate, currTime); ```