so if I delete all the stuff with KEY_TYPE in it, the program runs fine. As soon as I add in the KEY_TYPE element, I get thrown an error that the type column doesn't exist. I verified that this was the case in SQLLite Editor.
Here is my class
package com.example.blizz_000.lureorganizer;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.sql.SQLException;
public class LureOrganizer {
public com.example.blizz_000.lureorganizer.DatabaseHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;
public static final String KEY_NAME = "model";
public static final String KEY_MAKER = "company";
public static final String KEY_SIZE = "size";
public static final String KEY_COLOR = "color";
public static final String KEY_TYPE = "TEST";
public static final String KEY_ROWID = "_id";
private static final String DATABASE_NAME = "fishing_db";
private static final String DATABASE_TABLE = "LURES";
public static int DATABASE_VERSION = 1;
// DATABASE HELPER CLASS*********************************************************
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + DATABASE_TABLE +" (" +
KEY_ROWID +"INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_NAME + " TEXT, " +
KEY_MAKER + " TEXT, " +
KEY_COLOR + " TEXT, " +
"TEST text, " +
KEY_SIZE + " TEXT);");
//db.execSQL("ALTER TABLE LURES ADD COLUMN TEST TEST"); // Won't find the table
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
// END DATABASE HELPER CLASS *********************************************************
//*********************BEGIN MY METHODS**************************
public LureOrganizer(Context c) {
ourContext = c;}
//Opens Db
public LureOrganizer open() throws SQLException{
ourHelper = new com.example.blizz_000.lureorganizer.DatabaseHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
return this;}
//Opens Db NO EXCEPTION
public LureOrganizer opennoe() {
ourHelper = new com.example.blizz_000.lureorganizer.DatabaseHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
return this;}
//Closes Db
public void close() {
ourHelper.close();}
//Entries
public long createEntry(String name, String maker, String color, String size, String type) {
ContentValues cv = new ContentValues();
cv.put(KEY_NAME, name);
cv.put(KEY_MAKER, maker);
cv.put(KEY_COLOR, color);
cv.put(KEY_SIZE, size);
cv.put(KEY_TYPE, type);
return ourDatabase.insert(DATABASE_TABLE, null, cv);}
//RETRIEVE ALL PIECES OF THE DATA *****************************************************************************************************//
//Retrive Data for SINGLE PIECE
public String[] getData(String id) {
String[] columns = new String[]{KEY_ROWID, KEY_NAME, KEY_MAKER, KEY_COLOR, KEY_SIZE};
Cursor d = ourDatabase.rawQuery("select * from LURES WHERE _id = ?",
new String[]{id});
String[] resultarray = new String[5];
int iName = d.getColumnIndex(KEY_NAME);
int iMaker = d.getColumnIndex(KEY_MAKER);
int iColor = d.getColumnIndex(KEY_COLOR);
int iSize = d.getColumnIndex(KEY_SIZE);
int iType = d.getColumnIndex(KEY_TYPE);
for (d.moveToFirst(); !d.isAfterLast(); d.moveToNext()) {
resultarray[0] = d.getString(iMaker);
resultarray[1] = d.getString(iName);
resultarray[2] = d.getString(iColor);
resultarray[3] = d.getString(iSize);
resultarray[4] = d.getString(iType);
}
return resultarray;
}
//Retrieve Data
public String[] getName() {
String[] columns = new String[]{KEY_ROWID, KEY_NAME, KEY_MAKER, KEY_COLOR, KEY_SIZE, KEY_TYPE};
Cursor d = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
String result ="";
String[] resultarray = new String[5];
int iRow = d.getColumnIndex(KEY_ROWID);
int iName = d.getColumnIndex(KEY_NAME);
int iMaker = d.getColumnIndex(KEY_MAKER);
int iColor = d.getColumnIndex(KEY_COLOR);
int iSize = d.getColumnIndex(KEY_SIZE);
int iType = d.getColumnIndex(KEY_TYPE);
for(d.moveToFirst(); !d.isAfterLast(); d.moveToNext()){
resultarray[0] = d.getString(iMaker);
resultarray[1] = d.getString(iName);
resultarray[2] = d.getString(iColor);
resultarray[3] = d.getString(iSize);
resultarray[4] = d.getString(iType);
}
return resultarray;
}
//CURSOR READER
public Cursor readEntry() {
String[] columns = new String[]{KEY_ROWID, KEY_NAME, KEY_MAKER, KEY_COLOR, KEY_SIZE, KEY_TYPE};
Cursor d = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
return d;
}
public void DeleteRow(String id) {
ourDatabase.delete(DATABASE_TABLE, "_id = ?",
new String[]{id});
}
}
I know that the code works other than the KEY_TYPE stuff, so I don't feel it is necessary to include other classes, but I will if it helps.
The LOGCAT is throwing the error on the getData method, which makes sense, since it is the first method called in my onClickHandler that would require the KEY_TYPE column to be there.
I think it is more of an issue with the table not updating for some reason than an error with the method. Any help would be greatly appreciated! Thanks so much
Aucun commentaire:
Enregistrer un commentaire