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);
}
}
答案 0 :(得分:1)
在searchPass()
方法
String query = "select uname,pass from " + TABLE_NAME;
因为最终您的查询错误地变为如下错误
"select uname,pass fromcontacts"
且"fromcontacts"
不存在,应该是"from contacts"