我刚接触编程android,我正在尝试创建一个SQLite DAtabase,但我一直得到这个错误
06-05 17:10:59.164: ERROR/AndroidRuntime(268): FATAL EXCEPTION: main
06-05 17:10:59.164: ERROR/AndroidRuntime(268): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.c.notes/com.c.notes.Notes}: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, title, body FROM note
我读过其他人和我有同样的问题,但没有一个解决方案有效。 这是我的数据库适配器类,我相信问题是
package com.c.notes;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class NotesDataBase {
/* public static final String Note_TITLE = "noteTitle";
public static final String Note = "notee"; //these dont work must need other form for sql to work
public static final String NoteID = "Noteid";
*/
public static final String KEY_TITLE = "title";
public static final String KEY_BODY = "body";
public static final String KEY_ROWID = "_id";
private static final String Iden = "notesLinkCable";
private ACTNotesDBBuddy DatBuddy;//dbhelper was a coni
private SQLiteDatabase ACTNotesDB;
/** private static final String Create_DataBase =
"create table note (Noteid integer primary key autoincrement, "
+ "noteTitle text not null, notee text not null);";
*/
private static final String DATABASE_CREATE =
"create table notes (_id integer primary key autoincrement, "
+ "title text not null, body text not null);";
private static final String DBname = "DatBass";
private static final String DatBassTable = "note";
private static final int DatBassVER = 2;
private final Context coni;
private static class ACTNotesDBBuddy extends SQLiteOpenHelper {
ACTNotesDBBuddy(Context context){
super(context, DBname, null, DatBassVER);
}
@Override//1
public void onCreate(SQLiteDatabase sld){
sld.execSQL(DATABASE_CREATE);//so the data has so bs stuff pushed in it already lol
}
@Override//2
public void onUpgrade(SQLiteDatabase slld, int old, int newV){
Log.w(Iden, "I guess I'm upgrading sdl from ver" + old + " to " + newV +
" ps I hear this will kill off the old king and knights saved");//this is a logCat tag I believe anyway this kills old data for an update...wont be doing that
slld.execSQL("DROP TABLE IF EXISTS " + KEY_TITLE);
onCreate(slld);
}
}
//3
public NotesDataBase(Context con){
this.coni=con;
}
//4
public NotesDataBase open() throws SQLException{
DatBuddy = new ACTNotesDBBuddy(coni);
ACTNotesDB =DatBuddy.getWritableDatabase();
return this;
}
//5
public void close(){
DatBuddy.close();
}
//6 a 10
public long createNote( String name, String body){
ContentValues Orgin = new ContentValues();
Orgin.put(KEY_TITLE, name);
Orgin.put(KEY_BODY,body);//my intial thought is this will over right each other but i believe its kinda like a stackish thing :)
return ACTNotesDB.insert(DatBassTable ,null,Orgin);
}
//7a6
public boolean deleteNote(long locoRow){
return ACTNotesDB.delete(DatBassTable,KEY_ROWID + "=" + locoRow,null)>0;
}
//8
public Cursor fetchAllNotes(){
return ACTNotesDB.query(DatBassTable, new String []{ KEY_ROWID,KEY_TITLE,KEY_BODY}, null, null, null, null, null);
}
//9a7
public Cursor fetchNote(long rid) throws SQLException{
Cursor cursor = ACTNotesDB.query(true, DatBassTable, new String [] {KEY_ROWID,KEY_TITLE,KEY_BODY}, KEY_ROWID +"="+rid, null, null, null, null, null);
if(cursor != null){
cursor.moveToFirst();
}
return cursor;
}
//10
public boolean updateNote(long loco, String name, String note) {
ContentValues info = new ContentValues();
info.put(KEY_TITLE, name);
info.put(KEY_BODY, note);
return ACTNotesDB.update(DatBassTable, info, KEY_ROWID + "=" + loco, null) > 0;
}
}
答案 0 :(得分:4)
您查询的表在数据库表名变量中保存为“note”。您使用“s”将表格创建为“注释”。