0

アプリケーションを開発していますが、この問題に直面しました。すべてを実行しましたが、まだ解決されてい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
4

2 に答える 2

2

dbhelper でこの行が必要です

this.db = this.getWritableDatabase();

それ以外の場合、onCreate は呼び出されません。「Database db」変数も必要であることに注意してください

http://www.finalconcept.com.au/article/view/android-creating-a-sqlite-database

于 2012-11-25T17:15:31.127 に答える
0

少し遅れましたが、決して遅くはありませんでした。私はこのような問題を抱えており、コンテンツプロバイダーを使用しているため、テーブルの属性を投影しているときに、投影されていない属性はベースURIに表示されないため、その問題を修正するには、テーブルのすべての属性を投影しますprojectionMap.put(Tablename.Attribute1, Tablename.Attribute1) ;

于 2014-04-22T15:15:15.227 に答える