我正在开发一个应用程序,我遇到了这个问题,我做了所有事情,但仍然没有解决,它包含 error = "column 'name' does not exist"
如果可能的话,给我一些解决这个问题的技巧
我也删除了手机中的数据库,
请帮帮我
提前谢谢。
public class DataBaseBON {
String TAG;
private Context ourContext;
private dbhelper ourhelper;
private SQLiteDatabase ourdatabase;
public final static String KEY_ID= "_id";
public final static String KEY_NUMBER="blockednumbers";
public final static String N_NAME="name";
public final static String DATABASE_NAME="databasebon.db";
public final static String DATABASE_TABLE="tabledb";
public final static int DATABASE_VERSION=2;
private static final String DATABASE_CREATE = "create table "
+ DATABASE_TABLE + "(" + KEY_ID
+ " integer primary key autoincrement, "
+ N_NAME + " text not null,"
+ KEY_NUMBER
+ " text not null);";
public class dbhelper extends SQLiteOpenHelper{
public dbhelper(Context context) { //?
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(dbhelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
public DataBaseBON(Context c){
ourContext =c ;
}
public DataBaseBON open() throws SQLException{
ourhelper = new dbhelper(ourContext);
ourdatabase = ourhelper.getWritableDatabase();
ourdatabase=ourhelper.getReadableDatabase();
return this;
}
public void close(){
ourhelper.close();
}
public long creatEntry(String inputnumber , String name) {
// TODO Auto-generated method stub
ContentValues cv= new ContentValues();
cv.put(KEY_NUMBER, inputnumber);
cv.put(N_NAME, name);
Log.v(inputnumber, "adding to Database");
return ourdatabase.insert(DATABASE_TABLE, null, cv);
}
public Cursor getcursor() {
String[] columns = new String[]{ N_NAME, KEY_NUMBER };
Cursor c=ourdatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
return c;}
public String[] getcloumns() {
String[] columns = new String[]{ N_NAME, KEY_NUMBER };
return columns ;
}
public int[] getto() {
String TAG = null;
int[] to = new int[] { android.R.id.text1, android.R.id.text2 };
Log.v(TAG, "get to is ok");
return to ;
}
public String[] getdata3(String[] result) {
String TAG = null;
String[] columns = new String[]{ N_NAME, KEY_NUMBER };
Cursor c=ourdatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
int iRow = c.getColumnIndex(N_NAME);
int iName = c.getColumnIndex(KEY_NUMBER);
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
@SuppressWarnings("unused")
String[] result1= new String[] {c.getString(iName),c.getString(iRow)};
Log.v(TAG, "is ok");
}
return result;
}
错误:
11-25 23:49:33.633: E/AndroidRuntime(4072): java.lang.RuntimeException: Unable to startactivity
ComponentInfo{vahid.engineer.com/vahid.engineer.com.BlackNumbersBlockDb}:
java.lang.IllegalArgumentException: column 'name' does not exist
答案 0 :(得分:2)
你的dbhelper
需要这一行this.db = this.getWritableDatabase();
否则不会调用onCreate。请注意,您还需要一个“Database db”变量
http://www.finalconcept.com.au/article/view/android-creating-a-sqlite-database
答案 1 :(得分:0)
有点迟,但迟到总比没有我遇到过这样的问题而且我正在使用内容提供商,因此当您投影表的属性时,任何未投影的属性都不会对基础uri可见,因此要纠正该问题项目的所有属性表projectionMap.put(Tablename.Attribute1, Tablename.Attribute1) ;