user4114503
user4114503

Reputation:

Android table not creating

I am trying to create a SQLite DB for my android app. I have all the code but I am getting an error in the logcat saying that the no such table. I think I have the correct code but would appreciate it if you could take a look and see if I am missing something.

package com.example.rory.dbtest;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBAdapter {
public static final String KEY_ROWID = "id";
public static final String KEY_ITEM = "item";
public static final String KEY_LITRES = "litres";
//public static final String KEY_COURSE = "course";
//public static final String KEY_NOTES = "notes";
private static final String TAG = "DBAdapter";

private static final String DATABASE_NAME = "DripDrop";
private static final String DATABASE_TABLE = "table1";
private static final int DATABASE_VERSION = 1;

private static final String DATABASE_CREATE =
        "create table if not exists assignments (id integer primary key autoincrement, "
                + "item VARCHAR not null, litres date );";

private final Context context;

private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public DBAdapter(Context ctx)
{
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper
{
    DatabaseHelper(Context context)
    {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        try {
            db.execSQL(DATABASE_CREATE);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS contacts");
        onCreate(db);
    }
}

//---opens the database---
public DBAdapter open() throws SQLException
{
    db = DBHelper.getWritableDatabase();
    return this;
}

//---closes the database---
public void close()
{
    DBHelper.close();
}

//---insert a record into the database---
public long insertRecord(String item, String litres)
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_ITEM, item);
    initialValues.put(KEY_LITRES, litres);
    //initialValues.put(KEY_COURSE, course);
    //initialValues.put(KEY_NOTES, notes);
    return db.insert(DATABASE_TABLE, null, initialValues);
}

//---deletes a particular record---
public boolean deleteContact(long rowId)
{
    return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}

//---retrieves all the records---
public Cursor getAllRecords()
{
    return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_ITEM,
            KEY_LITRES}, null, null, null, null, null);
}

//---retrieves a particular record---
public Cursor getRecord(long rowId) throws SQLException
{
    Cursor mCursor =
            db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                            KEY_ITEM, KEY_LITRES},
                    KEY_ROWID + "=" + rowId, null, null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

//---updates a record---
public boolean updateRecord(long rowId, String item, String litres)
{
    ContentValues args = new ContentValues();
    args.put(KEY_ITEM, item);
    args.put(KEY_LITRES, litres);
    //args.put(KEY_COURSE, course);
    //args.put(KEY_NOTES, notes);
    return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}

}

And the logcat error after the app crashes is: (Sorry about the formatting I couldn't get it right at all).

package com.pinchtapzoom;

Caused by: android.database.sqlite.SQLiteException: no such table: table1 (code 1): , while      compiling: SELECT id, item, litres FROM table1 
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)

Upvotes: 0

Views: 50

Answers (2)

Blaze Tama
Blaze Tama

Reputation: 10948

Take a look at your table's name :

private static final String DATABASE_TABLE = "table1";

And your query :

"create table if not exists assignments bla bla"

They are not same, thats why you get this error.

You will need to change one of them so the name will be same.

Upvotes: 0

Giru Bhai
Giru Bhai

Reputation: 14408

It seems that you want to create table name as assignments and accessing data from table1.So change

private static final String DATABASE_TABLE = "table1";

to

private static final String DATABASE_TABLE = "assignments";

Upvotes: 1

Related Questions