-1

I'm getting error when I try to insert a new row into SQLite. I've searched for any error in my code, but I can't find any error. Any help would be great!

Here is my error:

android.database.sqlite.SQLiteException: table user has no column named friends (code 1): , while compiling: INSERT INTO user(email,name,api_key,friends,register_date) VALUES (?,?,?,?,?)

Here is my database:

private static final String TABLE_USER = "user";
private static final String COLUMN_ID = "id";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_EMAIL = "email";
private static final String COLUMN_API_KEY = "api_key";
private static final String COLUMN_FRIENDS = "friends";
private static final String COLUMN_REGISTER_DATE = "register_date";

public void onCreate(SQLiteDatabase db) {
    String SQL_CREATE_LOGIN = String.format(
            "CREATE TABLE %s (%s, %s, %s, %s)",
            TABLE_USER,
            String.format("%s integer primary key autoincrement", COLUMN_ID),
            String.format("%s varchar(30)", COLUMN_NAME),
            String.format("%s varchar(40)", COLUMN_EMAIL),
            String.format("%s varchar(32)", COLUMN_API_KEY),
            String.format("%s integer", COLUMN_FRIENDS),
            String.format("%s text", COLUMN_REGISTER_DATE)
    );
    db.execSQL(SQL_CREATE_LOGIN);
);

And this is my insert code:

public void addUser(String name, String email, String api_key, int friends, String register_date) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(COLUMN_NAME, name); // Name
    values.put(COLUMN_EMAIL, email); // Email
    values.put(COLUMN_API_KEY, api_key); // Email
    values.put(COLUMN_FRIENDS, friends); // Friends
    values.put(COLUMN_REGISTER_DATE, register_date); // Created At

    // Inserting Row
    long id = db.insert(TABLE_USER, null, values);
    db.close(); // Closing database connection

    Log.d(TAG, "New user inserted into sqlite: " + id);
}

1 Answers1

1

Try this :

public void onCreate(SQLiteDatabase db) {
    String SQL_CREATE_LOGIN = String.format(
            "CREATE TABLE %s (%s, %s, %s, %s, %s, %s)",
            TABLE_USER,
            String.format("%s integer primary key autoincrement", COLUMN_ID),
            String.format("%s varchar(30)", COLUMN_NAME),
            String.format("%s varchar(40)", COLUMN_EMAIL),
            String.format("%s varchar(32)", COLUMN_API_KEY),
            String.format("%s integer", COLUMN_FRIENDS),
            String.format("%s text", COLUMN_REGISTER_DATE)
    );
    db.execSQL(SQL_CREATE_LOGIN);
);

Maybe you forgot to edit your CREATE TABLE %s (%s, %s, %s, %s) to CREATE TABLE %s (%s, %s, %s, %s, %s, %s). The table that you want to create has 6 columns.

Randyka Yudhistira
  • 3,612
  • 1
  • 26
  • 41