T
theboss22
Ambitioniertes Mitglied
- 0
Hey Leute,
habe mich heute mit der dem Datenbanksystem SQL von Android auseinandergesetzt und nun eine Datenbank erstellt. Habe diese zunächst um die Spalte Breite ergänzt, alles lief super. Dann habe ich noch die Spalte "Kategorie" hinzugefügt und jetzt funktioniert plötzlich garnichts mehr
Ich hoffe ihr könnt mir weiterhelfen, merkwürdigerweise gibt es im Code selbst keine Fehler
LogCat liefert folgendes: bad request for field slot 0,4. numRows = 32, numColumns = 4
DatabaseHandler.java
AndroidSQLLiteTutorialActivity.java
Position.java
habe mich heute mit der dem Datenbanksystem SQL von Android auseinandergesetzt und nun eine Datenbank erstellt. Habe diese zunächst um die Spalte Breite ergänzt, alles lief super. Dann habe ich noch die Spalte "Kategorie" hinzugefügt und jetzt funktioniert plötzlich garnichts mehr
Ich hoffe ihr könnt mir weiterhelfen, merkwürdigerweise gibt es im Code selbst keine Fehler
LogCat liefert folgendes: bad request for field slot 0,4. numRows = 32, numColumns = 4
DatabaseHandler.java
Code:
package com.androidhive.androidsqlite;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
// All Static variables
// 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_CONTACTS = "positions";
// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_KATEGORIE = "Kategorie";
private static final String KEY_NAME = "name";
private static final String KEY_LAENGE = "Länge";
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_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_KATEGORIE + " TEXT,"+ KEY_NAME + " 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_CONTACTS);
// 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_KATEGORIE, position.getkategorie()); // Kategorie
values.put(KEY_NAME, position.getName()); // Name
values.put(KEY_BREITE, position.getBREITE()); // Breite
values.put(KEY_BREITE, position.getLAENGE()); // Länge
// Inserting Row
db.insert(TABLE_CONTACTS, null, values);
db.close(); // Closing database connection
}
// Getting single position
Position getPosition(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
KEY_NAME, 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_CONTACTS;
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.setkategorie(cursor.getString(1));
position.setName(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_KATEGORIE, position.getkategorie());
values.put(KEY_NAME, position.getName());
values.put(KEY_LAENGE, position.getLAENGE());
values.put(KEY_BREITE, position.getBREITE());
// updating row
return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
new String[] { String.valueOf(position.getID()) });
}
// Deleting single position
public void deletePosition(Position position) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
new String[] { String.valueOf(position.getID()) });
db.close();
}
// Getting positions Count
public int getContactsCount() {
String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();
// return count
return cursor.getCount();
}
}
AndroidSQLLiteTutorialActivity.java
Code:
package com.androidhive.androidsqlite;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
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("Landschaft","Hobbersdorfer Felder", "53.94966", "10.70343"));
db.addPosition(new Position("Landschaft","Felder bei Pelzerhaken", "54.10039", "10.83878"));
db.addPosition(new Position("Landschaft","Felder bei Neustadt", "54.10713", "10.84201"));
db.addPosition(new Position("Landschaft","Felder bei Gronenberg", "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()+" ,Kategorie: " + cn.getkategorie() +" ,Name: " + cn.getName() + " ,Länge: " + cn.getLAENGE()+" ,Breite: " + cn.getBREITE();
// Writing Contacts to log
Log.d("Name: ", log);
}
}
}
Position.java
Code:
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.kategorie;
}
// setting category
public String setkategorie(String kategorie){
return this.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.breite;
}
// setting LAENGE
public void setLAENGE(String laenge){
this.breite = laenge;
}
}