2015-01-19 4 views
0

Я хочу, чтобы создать базу данных, после запуска LogCat я получаю следующие ошибки:ошибки: «SQLite вернулся: код ошибки = 1, Msg = таблица позиции не имеет столбца с именем Kategorie»

  1. SQLite возвращаемый: Код ошибки = 1, MSG = таблица позиций не имеет столбец с именем Kategorie»
  2. Плохой запрос слоте поля 0,4 NumRows = 52, numColumns = 4" .

Мой код выглядит следующим образом:

Databasehandler.java

package com.androidhive.androidsqlite; 
public class DatabaseHandler extends SQLiteOpenHelper { 
// Database Version 

private static final int DATABASE_VERSION = 1; 

// Database Name 
private static final String DATABASE_NAME = "PositionManager"; 

// Contacts table name 
private static final String TABLE_POSITIONS = "positions"; 

// Contacts Table Columns names 
private static final String KEY_ID = "id"; 

private static final String KEY_NAME = "Name"; 

private static final String KEY_KATEGORIE = "kategorie"; 

private static final String KEY_LAENGE = "Laenge"; 

private static final String KEY_BREITE = "Breite"; 

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_POSITIONS + "("+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_KATEGORIE + " TEXT," + KEY_LAENGE + " TEXT,"+ KEY_BREITE + " 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_POSITIONS); 

    // Create tables again 
    onCreate(db); 
} 

/** 

* All CRUD(Create, Read, Update, Delete) Operations 

*/ 

// Adding new contact 

void addPosition(Position position) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 

    values.put(KEY_NAME, position.getName()); // Name 

    values.put(KEY_KATEGORIE, position.getkategorie()); // Kategorie 

    values.put(KEY_BREITE, position.getBREITE()); // Breite 

    values.put(KEY_BREITE, position.getLAENGE()); // Länge 

    // Inserting Row 
    db.insert(TABLE_POSITIONS, null, values); 

    db.close(); // Closing database connection 
} 

// Getting single position 
Position getPosition(int id) { 
    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor cursor = db.query(TABLE_POSITIONS, new String[] { KEY_ID, KEY_NAME, KEY_KATEGORIE, KEY_LAENGE, KEY_BREITE }, KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null); 

    if (cursor != null) 
     cursor.moveToFirst(); 

    Position position = new Position(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4)); 

    // return position 
    return position; 
} 

// Getting All Positions 
public List<Position> getAllPositions() { 
    List<Position> positionList = new ArrayList<Position>(); 

    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_POSITIONS; 

    SQLiteDatabase db = this.getWritableDatabase(); 

    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Position position = new Position(); 
      position.setID(Integer.parseInt(cursor.getString(0))); 
      position.setName(cursor.getString(1)); 
      position.setkategorie(cursor.getString(2)); 
      position.setLAENGE(cursor.getString(3)); 
      position.setBREITE(cursor.getString(4)); 

      // Adding position to list 
      positionList.add(position); 

     } while (cursor.moveToNext()); 
    } 

    // return position list 
    return positionList; 
} 

// Updating single contact 
public int updatePosition(Position position) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 

    values.put(KEY_NAME, position.getName()); 

    values.put(KEY_KATEGORIE, position.getkategorie()); 

    values.put(KEY_LAENGE, position.getLAENGE()); 

    values.put(KEY_BREITE, position.getBREITE()); 

    // updating row 
    return db.update(TABLE_POSITIONS, values, KEY_ID + " = ?", new String[] { String.valueOf(position.getID()) }); 

} 

// Deleting single position 
public void deletePosition(Position position) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    db.delete(TABLE_POSITIONS, KEY_ID + " = ?", new String[] { String.valueOf(position.getID()) }); 

    db.close(); 
} 

// Getting positions Count 
public int getContactsCount() { 
    String countQuery = "SELECT * FROM " + TABLE_POSITIONS; 

    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor cursor = db.rawQuery(countQuery, null); 

    cursor.close(); 

    // return count 
    return cursor.getCount(); 
} 
} 

AndroidSQLiteTutorialActivity.java

package com.androidhive.androidsqlite; 
public class AndroidSQLiteTutorialActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     DatabaseHandler db = new DatabaseHandler(this); 

     /** 
     * CRUD Operations 
     * */ 
     // Inserting Positions 
     Log.d("Insert: ", "Inserting .."); 
     db.addPosition(new Position("Hobbersdorfer Felder", "Landschaft" , "53.94966", "10.70343")); 
     db.addPosition(new Position("Felder bei Pelzerhaken", "Landschaft", "54.10039", "10.83878")); 
     db.addPosition(new Position("Felder bei Neustadt", "Landschaft" , "54.10713", "10.84201")); 
     db.addPosition(new Position("Felder bei Gronenberg", "Landschaft" , "54.04454", "10.69646")); 

     // Reading all positions 
     Log.d("Reading: ", "Reading all positions.."); 
     List<Position> positions = db.getAllPositions();  

     for (Position cn : positions) { 
      String log = "Id: "+cn.getID()+" ,Name: " + cn.getName() +" ,Kategorie: " + cn.getkategorie() + " ,Länge: " + cn.getLAENGE()+" ,Breite: " + cn.getBREITE(); 
       // Writing Contacts to log 
     Log.d("Name: ", log); 

     } 
    } 
} 

Position.java

package com.androidhive.androidsqlite; 

public class Position { 

//private variables 
int _id; 
String kategorie; 
String name; 
String breite; 
String laenge; 

// Empty constructor 
public Position(){ 

} 
// constructor 
public Position(int id, String kategorie, String name, String breite, String laenge){ 
    this._id = id; 
    this.kategorie = kategorie; 
    this.name = name; 
    this.breite = breite; 
    this.laenge = laenge; 
} 

// constructor 
public Position(String kategorie, String name, String breite, String laenge){ 
    this.kategorie = kategorie; 
    this.name = name; 
    this.breite = breite; 
    this.laenge = laenge; 
} 
// getting ID 
public int getID(){ 
    return this._id; 
} 

// setting id 
public void setID(int id){ 
    this._id = id; 
} 

// getting category 
public String getkategorie(){ 
    return this.name; 
} 

// setting category 
public void setkategorie(String kategorie){ 
    this.kategorie = kategorie; 
    } 

// getting name 
public String getName(){ 
    return this.name; 
} 

// setting name 
public void setName(String name){ 
    this.name = name; 
} 

// getting BREITE 
public String getBREITE(){ 
    return this.breite; 
} 

// setting BREITE 
public void setBREITE(String breite){ 
    this.breite = breite; 

} 

// getting LAENGE 
public String getLAENGE(){ 
    return this.laenge; 
} 
// setting LAENGE 
    public void setLAENGE(String laenge){ 
     this.laenge = laenge; 

    } 
} 
+0

заменить 'частного статический конечная строки KEY_KATEGORIE =«Kategorie»;' на 'частный статический конечная строка KEY_KATEGORIE =«Kategorie»;' The K должно быть UPCASE я думаю – Drakkin

+0

Пожалуйста @ theboss222 формата код, он больно читать. – shkschneider

+0

@ Drakkin, я пробовал это, но по-прежнему ту же ошибку – theboss222

ответ

0

После изучения кода я нашел следующую ошибку. я не знаю, что это поможет вам в вашем вопросе, но вы должны исправить в следующем:

void addPosition(Position position) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    // code 
    values.put(KEY_BREITE, position.getBREITE()); // Breite 

    values.put(KEY_BREITE, position.getLAENGE()); // Länge 
    // code 
    db.close(); // Closing database connection 
} 

Вы копировать-вставить ошибку здесь. Заменить KEY_BREITE с KEY_LAENGE

+0

Я просто установил версию базы данных на «2», теперь она работает, наконец, без ошибок :), но спасибо – theboss222

+0

ВСЕГДА, когда вы меняете вашей базы данных, вы должны увеличить константу DATABASE_VERSION. –

+0

@ theboss222 теперь я понимаю вашу ошибку. Вы можете установить версию базы данных: 1. Удалите приложение с мобильного устройства и установите его снова. Если вы изменили структуру базы данных, вы должны удалить приложение и установить его снова. Потому что 'onCreate (SQLiteDatabase db)' вызывается только один раз, когда вы впервые открываете свое приложение. – Anatol

Смежные вопросы