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]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en