0

MY ACTIVITY CODE it shows this error:

Caused by: android.database.sqlite.SQLiteException: no such column: uname (code 1): , while compiling: select uname,pass fromcontacts

My app crashes as soon as it is opened.

 package eminence.bbpsgangarammarg;

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

 public class DatabaseHelper extends SQLiteOpenHelper{

private static final int DATABSE_VERSION =1;
private static final String DATABSE_NAME = "contacts.db";
private static final String TABLE_NAME = "contacts";
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_UNAME= "uname";
private static final String COLUMN_PASSWORD= "pass";
SQLiteDatabase db;

private static final String TABLE_CREATE = "create table contacts(id integer    primary key not null ," +
        "name text not null , email text not null, uname text not null, pass text not null); ";

public DatabaseHelper(Context context)
{
    super(context, DATABSE_NAME , null, DATABSE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
    this.db=db;
}

public void insertContact(Contact c)
{
    db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    String query = "select * from contacts";
    Cursor cursor = db.rawQuery(query, null);
    int count = cursor.getCount();

    values.put(COLUMN_ID,count);
    values.put(COLUMN_NAME , c.getName());
    values.put(COLUMN_EMAIL , c.getEmail());
    values.put(COLUMN_UNAME , c.getUname());
    values.put(COLUMN_PASSWORD , c.getPass());

    db.insert(TABLE_NAME,null,values);
    db.close();
}


public String searchPass(String uname) {
    db = this.getReadableDatabase();
    String query = "select uname,pass from" + TABLE_NAME;

    Cursor cursor = db.rawQuery(query, null);
    String a, b;
    b = "not found";
    if (cursor.moveToFirst()) {
        do {
            a = cursor.getString(0);
            b = cursor.getString(1);

            if (a.equals(uname)) {
                b = cursor.getString(1);
                break;
            }
        } while (cursor.moveToNext());
    }
    return b;
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String query="DROP TABLE IF EXISTS "+TABLE_NAME;
    db.execSQL(query);
    this.onCreate(db);
}
}
halfer
  • 19,824
  • 17
  • 99
  • 186
  • If you are getting a count of your contacts, would it not be better to `select count(*) c from contacts`, and read a single record? – halfer Sep 09 '16 at 22:34

1 Answers1

1

Change your 2nd line to following in searchPass() method

String query = "select uname,pass from " + TABLE_NAME;

Because finally your query was mistakenly becoming as follows which is wrong

"select uname,pass fromcontacts"

and "fromcontacts" does not exists it should be "from contacts"

Nikhil
  • 3,711
  • 8
  • 32
  • 43