2

I'm trying to load values into a SQLite table on android. My application keeps breaking but it doesnt throw me a specific error besides NullPointerException which has be believing the table is not being created correctly.

public class MySQLiteHelper{


        private static final String DATABASE_NAME = "breadcrumbs.db";
        private static final int DATABASE_VERSION = 1;
        public static final String TABLE_BREADCRUMBS = "breadcrumbs";
        private static Context context;
        static SQLiteDatabase db;
        private static SQLiteStatement insertStmt;
        private static final String INSERT ="insert into " + TABLE_BREADCRUMBS + " (time,lat,lon) values (?,?,?)";


        public MySQLiteHelper(Context context) {
            MySQLiteHelper.context = context;
            OpenHelper openHelper = new OpenHelper(MySQLiteHelper.context);
            MySQLiteHelper.db = openHelper.getWritableDatabase();
            MySQLiteHelper.insertStmt = MySQLiteHelper.db.compileStatement(INSERT);

        }

        public static long insert(long time,int lat,int lon) {
            insertStmt.bindLong(1, time);
            insertStmt.bindLong(2, lat);
            insertStmt.bindLong(3, lon);
            return insertStmt.executeInsert();
        }

        public void deleteAll() {
            db.delete(TABLE_BREADCRUMBS, null, null);
        }

        public List<String[]> selectAll()
        {
            List<String[]> list = new ArrayList<String[]>();
            Cursor cursor = db.query(TABLE_BREADCRUMBS, new String[] 
                    { "id","time","lat","lon"}, null, null, null, null, null); 
           int x=0;
            if (cursor.moveToFirst()) {
               do {
                    String[] b1=new String[]{cursor.getString(0),cursor.getString(1),cursor.getString(2),
    cursor.getString(3)};
                    list.add(b1);
                    x=x+1;
               } while (cursor.moveToNext());
            }
            if (cursor != null && !cursor.isClosed()) {
               cursor.close();
            } 
           cursor.close();
            return list;
       }

        public void delete(int rowId) {
            db.delete(TABLE_BREADCRUMBS, null, null); 
      } 


    private static class OpenHelper extends SQLiteOpenHelper {
            OpenHelper(Context context) {
                 super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            public void onCreate(SQLiteDatabase db) {
                db.execSQL("CREATE TABLE " + TABLE_BREADCRUMBS + " (id INTEGER PRIMARY KEY, tim REAL, lat REAL, long REAL);");
                //db.execSQL("CREATE TABLE " + TABLE_BREADCRUMBS + " (id INTEGER PRIMARY KEY AUTOINCREMENT, time REAL, lat REAL, long REAL);");
            }

           @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
           {
                 db.execSQL("DROP TABLE IF EXISTS " + TABLE_BREADCRUMBS);
                 onCreate(db);


           }    
     }

And I'm calling the method in another class with:

    @Override
            public void onLocationChanged(Location location) {
                int lat = (int) (location.getLatitude() * 1E6);
                int lng = (int) (location.getLongitude() * 1E6);
                long time = (int)(location.getTime() * 1E6);
                GeoPoint point = new GeoPoint(lat, lng);
                createMarker();
                MySQLiteHelper.insert(time,lat,lng);
                mapController.animateTo(point); // mapController.setCenter(point);

            }
}

Perhaps I need to call OpenHelper somehow?

1
  • you should also put the logcat Commented Apr 3, 2012 at 4:05

3 Answers 3

5

Extend SQLiteOpenHelper & override two methods onCreate() and onUpgrade()

You can follow this really helpful tutorial

Sign up to request clarification or add additional context in comments.

1 Comment

did you try to use this tutorial to save huge text?like SMS?
3

You need to make your class extend SQLiteOpenHelper I believe.

Comments

3

Fixed by changing insert statement to match column name "tim" instead of "time".

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.