1

I am trying to configure a simple DbHelper, and getting an error while executing.

The error is:

 SQLiteException near "null": syntax error: , while compiling: INSERT OR REPLACE INTO

I cannot figure out what is the problem?

The DbHelper class is:

    package com.sqlite.test1;

    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;

    public class DbHelper extends SQLiteOpenHelper{


    public static final int DB_VERSION = 1;
    public static final String DB_NAME = "time_storage";
    public static final String DB_TABLE = "timer_data";

    public static final String C_ID = "iderty_id";
    public static final String C_DATE = "date";
      Context context;

    public DbHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table if not exists " + DB_TABLE + " (" + C_ID + "integer primary key autoincrement, " 
                    + C_DATE + " text not null );");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);
        this.onCreate(db);      
    }}

The main class is:

package com.sqlite.test1;

import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;

public class SQlite_test1Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    DbHelper dbHelper = new DbHelper(SQlite_test1Activity.this);
    SQLiteDatabase db = dbHelper.getWritableDatabase();

    String variable1 = "this is the first text to database";
    ContentValues values = new ContentValues();
    db.insertWithOnConflict(DbHelper.DB_TABLE, null, values,
            SQLiteDatabase.CONFLICT_REPLACE);
    values.put(DbHelper.C_DATE, variable1);

    db.close();
    dbHelper.close();

}}

1 Answer 1

2

You need to put in the values before you do the insert, not after, otherwise you're not inserting anything. Change this:

ContentValues values = new ContentValues();
db.insertWithOnConflict(DbHelper.DB_TABLE, null, values,
        SQLiteDatabase.CONFLICT_REPLACE);
values.put(DbHelper.C_DATE, variable1);

to this:

ContentValues values = new ContentValues();
values.put(DbHelper.C_DATE, variable1);
db.insertWithOnConflict(DbHelper.DB_TABLE, null, values,
        SQLiteDatabase.CONFLICT_REPLACE);

EDIT

Found another issue:

db.execSQL("create table if not exists " + DB_TABLE + " (" + C_ID + "integer primary key autoincrement, " + C_DATE + " text not null );");

The above code is creating a primary key called iderty_idinteger. It should be like this:

db.execSQL("create table if not exists " + DB_TABLE + " (" + C_ID + " integer primary key autoincrement, " + C_DATE + " text not null );");

Note the space inserted before integer primary...

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.