E/Sqlitelog error: (1) in such column

Asked

Viewed 649 times

1

I’m getting a bug in my code and I can’t seem to fix it, I wonder if you could give me a little help?

I’m getting the bug "E/Sqlitelog: (1) in such column":

09-27 04:04:14.798 14342-14342/com.pineapple.pineapple_mobi1 E/Sqlitelog: (1) in such column: Aline 09-27 04:04:14.801 14342-14342/com.pineapple.pineapple_mobi1 E/Androidruntime: FATAL EXCEPTION: main Process: com.pineapple.pineapple_mobi1, PID: 14342 java.lang.Runtimeexception: Unable to start Activity Componentinfo{com.pineapple.pineapple_mobi1/com.pineapple.pineapple_mobi1.Mainactivity}: android.database.sqlite.Sqliteexception: no such column: Aline (code 1): , while compiling: SELECT _id, noteText, Aline FROM Notes ORDER BY Aline DESC


Notesprovider.java:

package com.pineapple.pineapple_mobi1;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;


/**
 * Created by aline on 25/09/17.
 */

public class NotesProvider extends ContentProvider {


    private static final String AUTHORITY = "com.pineapple.pineapple_mobi1.notesprovider";
    private static final String BASE_PATH = "notes";
    public static final Uri CONTENT_URI =
            Uri.parse("content://" + AUTHORITY + "/" + BASE_PATH);


    private static final int NOTES = 1;
    private static final int NOTES_ID = 2;


    private static final UriMatcher uriMatcher=
            new UriMatcher(UriMatcher.NO_MATCH);
    static {
        uriMatcher.addURI(AUTHORITY, BASE_PATH, NOTES);
        uriMatcher.addURI(AUTHORITY, BASE_PATH + "/#", NOTES_ID);
    }


    private SQLiteDatabase database;

    @Override
    public boolean onCreate() {
        DBOpenHelper helper = new DBOpenHelper(getContext());
        database = helper.getWritableDatabase();
        return true;
    }


    @Nullable
    @Override

    public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {

    //CRUD operations
    return database.query(DBOpenHelper.TABLE_NOTES, DBOpenHelper.ALL_COLUMNS, s, null,null,null, DBOpenHelper.NOTE_CREATED + " DESC");
    //FIM CRUD operations


    }

    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }

    @Nullable
    @Override
    public Uri insert(Uri uri, ContentValues contentValues) {

        long id = database.insert(DBOpenHelper.TABLE_NOTES, null, contentValues);
        return Uri.parse(BASE_PATH + "/" +id);
    }

    @Override
    public int delete(Uri uri, String s, String[] strings) {

        return database.delete(DBOpenHelper.TABLE_NOTES,s,strings);

    }

    @Override
    public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {

        return database.update(DBOpenHelper.TABLE_NOTES, contentValues, s, strings);

    }
}

Dbopenhelper.Java

package com.pineapple.pineapple_mobi1;

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


/**
 * Created by aline on 25/09/17.
 */

public class DBOpenHelper extends SQLiteOpenHelper{



    private static final String DATABASE_NAME = "notes.db";
    private static final int DATABASE_VERSION = 1;
    public static final String TABLE_NOTES= "notes";
    public static final String NOTE_ID = "_id";
    public static final String NOTE_TEXT = "noteText";
    public static final String NOTE_CREATED = "Aline";


//    public static final String[] ALL_COLUMNS = {NOTE_ID, NOTE_TEXT, NOTE_CREATED};
public static final String[] ALL_COLUMNS = {NOTE_ID, NOTE_TEXT, NOTE_CREATED };


    private static final String TABLE_CREATE =
            "CREATE TABLE " + TABLE_NOTES + "("
                    + NOTE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                    + NOTE_TEXT + " TEXT, "
                    + NOTE_CREATED + " TEXT default CURRENT_TIMESTAMP" + ")";


    public DBOpenHelper (Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }


    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(TABLE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NOTES);
        onCreate(sqLiteDatabase);
    }
}

Mainactivity.Java

package com.pineapple.pineapple_mobi1;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        insertNote("New note");



        Cursor cursor = getContentResolver().query(NotesProvider.CONTENT_URI, DBOpenHelper.ALL_COLUMNS, null, null, null, null);
        String[] from = {DBOpenHelper.NOTE_TEXT};
        int[] to = {android.R.id.text1};
        CursorAdapter cursorAdapter =new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to, 0);

        ListView list = (ListView) findViewById(android.R.id.list);
        list.setAdapter(cursorAdapter);


    }

    private void insertNote(String noteText) {
        ContentValues values = new ContentValues();
        values.put(DBOpenHelper.NOTE_TEXT, noteText);
        Uri noteUri = getContentResolver().insert(NotesProvider.CONTENT_URI, values);

        Log.d("MainActivity", "Inserted note " + noteUri.getLastPathSegment());
    }
}

cat log:

09-27 04:04:14.798 14342-14342/com.pineapple.pineapple_mobi1 E/SQLiteLog: (1) no such column: Aline
09-27 04:04:14.801 14342-14342/com.pineapple.pineapple_mobi1 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           Process: com.pineapple.pineapple_mobi1, PID: 14342                                                                                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pineapple.pineapple_mobi1/com.pineapple.pineapple_mobi1.MainActivity}: android.database.sqlite.SQLiteException: no such column: Aline (code 1): , while compiling: SELECT _id, noteText, Aline FROM notes ORDER BY Aline DESC                                                                                 
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724)                                                                                 
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)                                                                                 
   at android.app.ActivityThread.-wrap12(ActivityThread.java)                                                                                 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)                                                                                 
   at android.os.Handler.dispatchMessage(Handler.java:110)                                                                                 
   at android.os.Looper.loop(Looper.java:208)                                                                                 
   at android.app.ActivityThread.main(ActivityThread.java:6267)                                                                                 
   at java.lang.reflect.Method.invoke(Native Method)                                                                                 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)                                                                                 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)                                                                                 Caused by: android.database.sqlite.SQLiteException: no such column: Aline (code 1): , while compiling: SELECT _id, noteText, Aline FROM notes ORDER BY Aline DESC                                                                                 
   at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)                                                                                 
   at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:905)                                                                                 
   at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:516)                                                                                 
   at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)                                                                                 
   at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)                                                                                 
   at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)                                                                                 
   at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)                                                                                 
   at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1348)                                                                                 
   at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1195)                                                                                 
   at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1066)                                                                                 
   at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1272)                                                                                 
   at com.pineapple.pineapple_mobi1.NotesProvider.query(NotesProvider.java:54)                                                                                 
   at android.content.ContentProvider.query(ContentProvider.java:1038)                                                                                 
   at android.content.ContentProvider$Transport.query(ContentProvider.java:247)                                                                                 
   at android.content.ContentResolver.query(ContentResolver.java:602)                                                                                 
   at com.pineapple.pineapple_mobi1.MainActivity.onCreate(MainActivity.java:26)                                                                                 
   at android.app.Activity.performCreate(Activity.java:6701)                                                                                 
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)                                                                                 
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)                                                                                 
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)                                                                                  
   at android.app.ActivityThread.-wrap12(ActivityThread.java)                                                                                  
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)                                                                                  
   at android.os.Handler.dispatchMessage(Handler.java:110)                                                                                  
   at android.os.Looper.loop(Looper.java:208)                                                                                  
   at android.app.ActivityThread.main(ActivityThread.java:6267)                                                                                  
   at java.lang.reflect.Method.invoke(Native Method)                                                                                  
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)                                                                                  
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
  • This column exists from the moment the table was created or added to the Dbopenhelper after?

1 answer

0


Aline,

You have two ways to solve this problem:

1º You must change the version of your local bank, so that it sees the new columns you added, example:

private static final int DATABASE_VERSION = 2;

2º Before running your application again by Androidstudio, uninstall the device application, because when it is installed again and not only replaced, the new local database with all columns will be added.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.