Note that there are some explanatory texts on larger screens.

plurals
  1. POforce close at cursor line!
    primarykey
    data
    text
    <p>Hy! I'm trying to create an application that looks for gps data that was stored in SQlite database. But I'm facing a problem: I built an DbAdapter class that creates my database and now I'm trying from another class to get an cursor over my all data,using this function:</p> <pre><code>public Cursor fetchAllData() { return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_LONGITUDE,KEY_LATITUDE,KEY_COUNTRY,KEY_TOWN,KEY_STREET}, null, null, null, null, null); } </code></pre> <p>Now,I'm creating an instance of DbAdapter in my new class,but I get forceclose when I insert this line:Cursor c=db.fetchAllData();</p> <p>The class that creates my database looks like this:</p> <pre><code>package test.android; import java.util.ArrayList; import java.util.List; 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 CoordonateDbAdapter { public static final String KEY_ROWID = "_id"; public static final String KEY_LONGITUDE= "longitude"; public static final String KEY_LATITUDE = "latitude"; public static final String KEY_COUNTRY= "country"; public static final String KEY_TOWN= "town"; public static final String KEY_STREET = "street"; private static final String TAG = "CoordonateDbAdapter"; private DatabaseHelper mDbHelper; private SQLiteDatabase mDb; private static final String DATABASE_CREATE = "create table car1 (_id integer primary key autoincrement, " + "longitude text not null, latitude text not null," + "country text not null,town text not null,street text not null);"; private static final String DATABASE_NAME = "gps"; private static final String DATABASE_TABLE = "masini"; private static final int DATABASE_VERSION = 1; 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) { db.execSQL(DATABASE_CREATE); } @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 CoordonateDbAdapter(Context ctx) { this.mCtx = ctx; } public CoordonateDbAdapter open() throws SQLException { mDbHelper = new DatabaseHelper(mCtx); mDb = mDbHelper.getWritableDatabase(); return this; } public void close() { mDbHelper.close(); } public long insertData(String longitude, String latitude, String country, String town, String street) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_LONGITUDE, longitude); initialValues.put(KEY_LATITUDE, latitude); initialValues.put(KEY_COUNTRY, country); initialValues.put(KEY_TOWN, town); initialValues.put(KEY_STREET, street); return mDb.insert(DATABASE_TABLE, null, initialValues); } public boolean deleteData(long rowId) { return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) &gt; 0; } public Cursor fetchAllData() { return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_LONGITUDE,KEY_LATITUDE,KEY_COUNTRY,KEY_TOWN,KEY_STREET}, null, null, null, null, null); } public Cursor fetchData(long rowId) throws SQLException { Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_LONGITUDE,KEY_LATITUDE,KEY_COUNTRY,KEY_TOWN,KEY_STREET}, KEY_ROWID + "=" + rowId, null, null, null, null, null); if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; } public boolean updateNote(long rowId, String longitude, String latitude,String country, String town,String street) { ContentValues args = new ContentValues(); args.put(KEY_LONGITUDE, longitude); args.put(KEY_LATITUDE, latitude); args.put(KEY_COUNTRY, country); args.put(KEY_TOWN, town); args.put(KEY_STREET, street); return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) &gt; 0; } public List&lt;String&gt; selectAll() { List&lt;String&gt; list = new ArrayList&lt;String&gt;(); Cursor cursor = this.mDb.query(DATABASE_TABLE, new String[] { "longitude"}, null, null, null, null, "name desc"); if (cursor.moveToFirst()) { do { list.add(cursor.getString(0)); } while (cursor.moveToNext()); } if (cursor != null &amp;&amp; !cursor.isClosed()) { cursor.close(); } return list; } } </code></pre> <hr> <p>And the class that retrieves the gps data is like this:</p> <pre><code>package test.android; import java.util.List; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.widget.Toast; public class screen_database extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.screen_database); CoordonateDbAdapter db = new CoordonateDbAdapter(this); db.open(); long id; // id= db.insertData("-36.2", "125","Romania","Cluj","Zorilor"); // db.insertData("44", "55","Romania","Iasi","Alexandru Ioan Cuza"); // List&lt;String&gt; names = db.selectAll(); Cursor c=db.fetchAllData(); /* if (c.moveToFirst()) { do { // DisplayTitle(c); } while (c.moveToNext()); }*/ // c.close(); } /* public void DisplayTitle(Cursor c) { Toast.makeText(this, "longitude: " + c.getString(0) + "\n" + "latitude: " + c.getString(1) + "\n" + "country: " + c.getString(2) + "\n" + "town: " + c.getString(3), Toast.LENGTH_LONG).show(); }*/ } //} </code></pre> <p>You can see lots of lines that are comments because I get force close when I'm asking for a Cursor,so I tried to keep it as simple. Do I need any permissions to work with cursors,becuase I looked on the internet and all the line code looks like mine?! Another problem is that my application is quite big,and I'm accesing this classes from other classes....a long row of classes until I get to query from the Sqlite. I would really apreciate if you would help me,it might be something simple but I can't figure it out what it is.Thank you!!!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload