卡在此引起:android.database.sqlite.SQLiteException:没有这样的列:uname(代码1):,编译时:选择uname,传递fromcontacts

时间:2016-09-09 19:30:56

标签: android sqlite

MY ACTIVITY CODE显示此错误:

  

引起:android.database.sqlite.SQLiteException:没有这样的列:uname(代码1):,编译时:选择uname,传递fromcontacts

我的应用程序在打开后立即崩溃。

 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);
}
}

1 个答案:

答案 0 :(得分:1)

searchPass()方法

中将第二行更改为以下内容
String query = "select uname,pass from " + TABLE_NAME;

因为最终您的查询错误地变为如下错误

"select uname,pass fromcontacts"

"fromcontacts"不存在,应该是"from contacts"