机器人数据库不能找到列_id,即使它是KEY_ID = _id [英] ANDROID Database cannot find column _id even though it is KEY_ID=_id
本文介绍了机器人数据库不能找到列_id,即使它是KEY_ID = _id的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的错误。
无法启动活动:没有这样的列:_id(code 1),而
编译:SELECT _id,名字从接触WHERE _id
块引用>Imade肯定我的专栏拼写
_id
而不是ID
我不明白为什么会这样。公共类数据库处理器扩展SQLiteOpenHelper {
//所有静态变量
私有静态最后弦乐TAG =MyActivity;
//数据库版本
私有静态最终诠释DATABASE_VERSION = 1;//数据库名称
私有静态最后弦乐DATABASE_NAME =contactsManager;//联系人表名
私有静态最后弦乐TABLE_CONTACTS =接触;//联系方式表列名
公共静态最后弦乐KEY_ID =_id;
公共静态最后弦乐KEY_NAME =名;
公共数据库处理器(上下文的背景下){
超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
}//创建表
@覆盖
公共无效的onCreate(SQLiteDatabase DB){
字符串CREATE_CONTACTS_TABLE =CREATE TABLE+ TABLE_CONTACTS +(
+ KEY_ID +INTEGER PRIMARY KEY,+ KEY_NAME +TEXT);
db.execSQL(CREATE_CONTACTS_TABLE);
}//数据库升级
@覆盖
公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
如果存在//删除旧的表
db.execSQL(DROP TABLE IF EXISTS+ TABLE_CONTACTS); //再次创建表
的onCreate(DB);
}//添加新联系人
无效addAddress(字符串名称){
SQLiteDatabase分贝= this.getWritableDatabase(); ContentValues值=新ContentValues();
values.put(KEY_NAME,名); // 联系人姓名
//插入行
db.insert(TABLE_CONTACTS,空,价值);
db.close(); //关闭数据库连接
}公共布尔deleteAllAddresses(){
SQLiteDatabase分贝= this.getWritableDatabase();
INT doneDelete = 0;
doneDelete = db.delete(TABLE_CONTACTS,NULL,NULL);
Log.w(TAG,Integer.toString(doneDelete));
返回doneDelete> 0;}公共光标fetchAddressesbyName(字符串inputText的)抛出的SQLException { SQLiteDatabase分贝= this.getWritableDatabase();
Log.w(TAG,inputText的);
光标mCursor = NULL;
如果(inputText的== NULL || inputText.length()== 0){
mCursor = db.query(TABLE_CONTACTS,新的String [] {KEY_ID,
KEY_NAME,},
NULL,NULL,NULL,NULL,NULL); }其他{
mCursor = db.query(真,TABLE_CONTACTS,新的String [] {KEY_ID,
KEY_NAME,},
KEY_NAME +LIKE'%+的inputText +%',空,
NULL,NULL,NULL,NULL);
}
如果(mCursor!= NULL){
mCursor.moveToFirst();
}
返回mCursor;} 公共光标fetchAllAddresses(){
SQLiteDatabase分贝= this.getWritableDatabase();
光标mCursor = db.query(TABLE_CONTACTS,新的String [] {KEY_ID,KEY_NAME,},KEY_ID,NULL,NULL,NULL,NULL); 如果(mCursor!= NULL){
mCursor.moveToFirst();
}
返回mCursor;
}
}下面是我的联系类。
公共类联系{
//私有变量
INT ID;
字符串名称= NULL;//获取ID
公众诠释的getID(){
返回ID;
}//设置ID
公共无效SETID(INT ID){
this.id = ID;
}//获取名称
公共字符串的getName(){
返回名称;
}//设置名称
公共无效setname可以(字符串名称){
this.name =名称;
}
}
解决方案尝试从1升级到Database_Version 2 ...我认为这将帮助你。
Here is my error.
Unable to start activity : no such column: _id (code 1): , while compiling: SELECT _id, name FROM contacts WHERE _id
Imade sure my column spelled
_id
instead ofid
I don't understand why this is happening.public class DatabaseHandler extends SQLiteOpenHelper { // All Static variables private static final String TAG = "MyActivity"; // Database Version private static final int DATABASE_VERSION = 1; // Database Name private static final String DATABASE_NAME = "contactsManager"; // Contacts table name private static final String TABLE_CONTACTS = "contacts"; // Contacts Table Columns names public static final String KEY_ID = "_id"; public static final String KEY_NAME = "name"; public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } // Creating Tables @Override public void onCreate(SQLiteDatabase db) { String CREATE_CONTACTS_TABLE = " CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT)"; db.execSQL(CREATE_CONTACTS_TABLE); } // Upgrading database @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Drop older table if existed db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); // Create tables again onCreate(db); } // Adding new contact void addAddress(String name) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, name); // Contact Name // Inserting Row db.insert(TABLE_CONTACTS, null, values); db.close(); // Closing database connection } public boolean deleteAllAddresses() { SQLiteDatabase db = this.getWritableDatabase(); int doneDelete = 0; doneDelete = db.delete(TABLE_CONTACTS, null, null); Log.w(TAG, Integer.toString(doneDelete)); return doneDelete > 0; } public Cursor fetchAddressesbyName(String inputText) throws SQLException { SQLiteDatabase db = this.getWritableDatabase(); Log.w(TAG, inputText); Cursor mCursor = null; if (inputText == null || inputText.length() == 0) { mCursor = db.query(TABLE_CONTACTS, new String[]{KEY_ID, KEY_NAME,}, null, null, null, null, null); } else { mCursor = db.query(true, TABLE_CONTACTS, new String[]{KEY_ID, KEY_NAME,}, KEY_NAME + " like '%" + inputText + "%'", null, null, null, null, null); } if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; } public Cursor fetchAllAddresses() { SQLiteDatabase db = this.getWritableDatabase(); Cursor mCursor = db.query(TABLE_CONTACTS, new String[]{ KEY_ID, KEY_NAME,},KEY_ID , null,null,null, null); if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; } }
Here is my contact class.
public class Contact { //private variables int id; String name=null; // getting ID public int getID(){ return id; } // setting id public void setID(int id){ this.id = id; } // getting name public String getName(){ return name; } // setting name public void setName(String name){ this.name = name; } }
解决方案Try to upgrade Database_Version from 1 to 2... I think that will help you.
这篇关于机器人数据库不能找到列_id,即使它是KEY_ID = _id的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文