列'name'不存在

时间:2012-11-25 16:03:32

标签: android database eclipse sqlite

我正在开发一个应用程序,我遇到了这个问题,我做了所有事情,但仍然没有解决,它包含 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

2 个答案:

答案 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) ;