I did the notepad tutorials and my SQL server is a modified version of that. For some reason my app is not writing to it correctly. Any help would be greatly appreciated. I dont understand what part of the code is wrong.
package com.drawing;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class NotesDbAdapter {
public static final String KEY_ROWID = "_id";
public static final String KEY_X = "x";
public static final String KEY_Y = "y";
public static final String KEY_Size = "size";
private static final String TAG = "NotesDbAdapter";
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
private static final String DATABASE_NAME = "data";
private static final String DATABASE_TABLE = "notes";
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_CREATE =
" create table " + DATABASE_TABLE + " ("
+ KEY_ROWID + " integer primary key autoincrement, "
+ KEY_X + " text not null, "
+ KEY_Y + " text not null, "
+ KEY_Size + " text not null);";
private final Context mCtx;
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(DATABASE_CREATE);
} catch (Exception e) {
Log.e("dbAdapter", e.getMessage().toString());
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS notes");
onCreate(db);
}
}
public NotesDbAdapter(Context ctx) {
this.mCtx = ctx;
}
public NotesDbAdapter open() throws SQLException {
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
return this;
}
public void close() {
mDbHelper.close();
}
public long createNote(float f, float g, int size) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_X, f);
initialValues.put(KEY_Y, g);
initialValues.put(KEY_Size, size);
return mDb.insert(DATABASE_TABLE, null, initialValues);
}
public boolean deleteNote(long rowId) {
return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
public Cursor fetchAllNotes() {
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_X,KEY_Y,KEY_Size}, null, null, null, null, null);
}
public Cursor fetchNote(long rowId) throws SQLException {
Cursor mCursor =
mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_X,KEY_Y,KEY_Size}, KEY_ROWID + "=" + rowId, null,
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public boolean updateNote(long rowId, int x, int y, int size) {
ContentValues args = new ContentValues();
args.put(KEY_X, x);
args.put(KEY_Y, y);
args.put(KEY_Size, size);
return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}
}
I think your problem is initiated here:
I would guess it should be more like in the question I link to:
Second, your table creation also seems wrong:
You have created all fields as primary key and autoincrement – that doesn’t really make sense. Again looking at the other question:
This makes much more sense.
Please take a closer look at the question below – and re-read the tutorials you have started with.
I keep getting the SQLException error with this
The question here may have problems, but seem to identify the columns properly (which is where you seem to have problems). The answers go through some other steps – and I recommend that you take a look at the ‘Related’ suggestions here on the right side of your own question. You may find more pointers to lead you in the right direction.