I am afraid "CHECK" is a reserved word in SQL, see http://developer.mimer.se/validator/sql-reserved-words.tml
Cheers, - Dmitri On Tue, Nov 3, 2009 at 3:08 PM, Radzell <[email protected]> wrote: > I been working on this code dealing with my database for days i can > figure out whats wrong. > > Heres my code: > package com.helpihelpyou; > > > 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.SQLiteException; > import android.database.sqlite.SQLiteOpenHelper; > import android.database.sqlite.SQLiteDatabase.CursorFactory; > import android.net.Uri; > import android.provider.Contacts.People; > import android.util.Log; > > import java.util.ArrayList; > import java.util.List; > > > public class HelpiDB { > > private static class HelpiDBHelper extends SQLiteOpenHelper { > Context ctx; > > public HelpiDBHelper(Context context, String name, CursorFactory > factory, int version) { > super(context, name, factory, version); > this.ctx = context; > } > > /* > * Called when no database exists in disk and the helper class needs > to > * create one. > */ > @Override > public void onCreate(SQLiteDatabase db) { > try { > db.execSQL(DATABASE_CREATE); > } catch (SQLException e) { > e.printStackTrace(); > } > try { > // Form an array specifying which columns to return. > String[] projection = new String[] { People._ID, > People.NAME, > People.NUMBER, > > }; > > // Get the base URI for the People table in the Contacts > content > // provider. > Uri contacts = People.CONTENT_URI; > > // Make the query. To get the data > > Cursor c = ctx.getContentResolver().query(contacts, > projection, > null, null, > null); > > int numRows = c.getCount(); > c.isFirst(); > c.moveToFirst(); > > for (int i = 0; i < numRows; ++i) { > Row row = new Row(); > row._id = c.getLong(0); > row.name = c.getString(1); > row.number = c.getString(2); > ContentValues initialValues = new ContentValues(); > initialValues.put("name", row.name); > initialValues.put("number", row.number); > Boolean check = false; > initialValues.put("check", check.toString()); > > db.insertOrThrow(DATABASE_TABLE, null, initialValues); > c.moveToNext(); > } > } catch (SQLiteException e) { > e.printStackTrace(); > } > } > > /* > * Upgrade the existing database to conform to the new version > Multiple > * previous versions can be handled by comparing _oldVersion and > * _newVersion values. > * > * The simplest case is to drop the old table and create a new one > */ > > @Override > public void onUpgrade(SQLiteDatabase db, int oldVersion, int > newVersion) { > db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); > onCreate(db); > } > > } > > public static final int CHECK_COLUMN = 3; > > public static final String KEY_CHECK = "check"; > // The index (key) column name for use in where clauses. > public static final String KEY_ID = "_id"; > > // The name and column index of each column in your database. > public static final String KEY_NAME = "name"; > > public static final String KEY_NUMBER = "number"; > > public static final int NAME_COLUMN = 1; > public static final int NUMBER_COLUMN = 2; > > private static final String DATABASE_CREATE = "create table " > + "HELPITABLE" > + " (_id integer primary > key autoincrement, " > + "name text not null, " > + "number text not null, " > + "check text not null" + > ");"; > > private static final String DATABASE_NAME = "HELPIDB"; > private static String DATABASE_PATH = "/data/data/com.helpihelpyou/ > databases/"; > > private static final String DATABASE_TABLE = "HELPITABLE"; > > private static final int DATABASE_VERSION = 1; > > private final Context ctx; > > private SQLiteDatabase db; > > private final HelpiDBHelper dbHelper; > > public HelpiDB(Context context) { > this.ctx = context; > ctx.deleteDatabase(DATABASE_NAME); > dbHelper = new HelpiDBHelper(context, DATABASE_NAME, null, > DATABASE_VERSION); > > } > > public boolean checkDataBase() { > > SQLiteDatabase checkDB = null; > > try { > String myPath = DATABASE_PATH + DATABASE_NAME; > checkDB = SQLiteDatabase.openDatabase(myPath, null, > SQLiteDatabase.OPEN_READONLY); > > } catch (SQLiteException e) { > > // database does't exist yet. > > } > > if (checkDB != null) { > > checkDB.close(); > > } > > return checkDB != null ? true : false; > } > > public void close() { > if (db != null) { > db.close(); > } > > } > > public void create() throws SQLiteException { > boolean dbExist = checkDataBase(); > if (dbExist) { > // If db exist do nothing > } else { > db = ctx.openOrCreateDatabase(DATABASE_NAME, 0, null); > db.execSQL(DATABASE_CREATE); > db = ctx.openOrCreateDatabase(DATABASE_NAME, 0, null); > > // Form an array specifying which columns to return. > String[] projection = new String[] { People._ID, People.NAME, > People.NUMBER, > > }; > > // Get the base URI for the People table in the Contacts content > // provider. > Uri contacts = People.CONTENT_URI; > > // Make the query. To get the data > > Cursor c = ctx.getContentResolver().query(contacts, projection, > null, null, null); > > int numRows = c.getCount(); > c.isFirst(); > c.moveToFirst(); > > for (int i = 0; i < numRows; ++i) { > Row row = new Row(); > row._id = c.getLong(0); > row.name = c.getString(1); > row.number = c.getString(2); > createRow(row.name, row.number, false); > c.moveToNext(); > } > } > } > > public void createRow(String name, String number, Boolean check) { > ContentValues initialValues = new ContentValues(); > initialValues.put("name", name); > initialValues.put("number", number); > initialValues.put("check", check.toString()); > > db.insertOrThrow(DATABASE_TABLE, null, initialValues); > > } > > public void deleteRow(long rowId) { > db.delete(DATABASE_TABLE, "_id=" + rowId, null); > } > > public List<Row> fetchAllRows() { > ArrayList<Row> ret = new ArrayList<Row>(); > try { > Cursor c = db.query(DATABASE_TABLE, new String[] { "_id", > "name", > "number", > "email", > "owner" }, null, null, > null, null, null); > int numRows = c.getCount(); > c.isFirst(); > c.moveToFirst(); > for (int i = 0; i < numRows; ++i) { > Row row = new Row(); > row._id = c.getLong(0); > row.name = c.getString(1); > row.number = c.getString(2); > ret.add(row); > c.moveToNext(); > } > } catch (SQLException e) { > Log.e("Exception on query", e.toString()); > } > return ret; > } > > public Cursor GetAllRows() { > try { > return db.query(DATABASE_TABLE, new String[] { "_id", "name", > "number", "check" }, > null, null, null, null, null); > } catch (SQLException e) { > Log.i("Error on query", e.toString()); > return null; > } > > } > > public HelpiDB open() throws SQLiteException { > db = dbHelper.getWritableDatabase(); > return this; > > } > > public void updateRow(long rowId, String name, String number, > Boolean check) { > ContentValues args = new ContentValues(); > args.put("name", name); > args.put("number", number); > args.put("check", check.toString()); > db.update(DATABASE_TABLE, args, "_id=" + rowId, null); > } > > } > > > > I keep getting this error > 11-03 17:54:37.302: WARN/System.err(1027): > android.database.sqlite.SQLiteException: near "check": syntax error: , > while compiling: INSERT INTO HELPITABLE(check, number, name) VALUES > (?, ?, ?); > > 11-03 17:54:37.452: ERROR/AndroidRuntime(1027): Caused by: > java.lang.NullPointerException > 11-03 17:54:37.452: ERROR/AndroidRuntime(1027): at > com.helpihelpyou.InsertActivity.onCreate(InsertActivity.java:60) > the error is on this line: > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected]<android-developers%[email protected]> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

