| 

.NET C# Java Javascript Exception

1
Hallo,
ich sitze jetzt schon länger vor dem Problem und sehe den Haken nicht;
mit dem obigen Code kann ich ohne weiteres die Datenbank in ein ListView der Activity
einlesen ohne dass der Cursor 0 ist;
wenn ich aber in das ListView des Fragments einlese, gibt der Cursor 0 zurück.
Kann mir jemand sagen, wo der Fehler liegt.
Die Datenbank stammt aus dem asset folder und wird vorab kopiert,deswegen auch getReadableDatabase().

Danke für die Hilfe


das Fragment
public class MyFragment extends Fragment {
public static final String DB_NAME = "werte";
String TAG;
private Wert_ABC_DbAdapter dbHelper;
ListView lv;
Cursor cur;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.myfragment, container, false);

dbHelper = new Wert_ABC_DbAdapter(getActivity());
dbHelper.open();

Log.i(TAG,""+ dbHelper.getClass().getName());
cur = dbHelper.fetch_All();
Log.i(TAG,"Cursor = " + cur.getCount());

//if(bgcur!=null && bgcur.getCount() > 0){
//Log.i(TAG,"Cursor = " + cur.getCount());

String[] from = new String[] {
//Wert_ABC_DbAdapter.KEY_ROWID,
Wert_ABC_DbAdapter.KEY_TITEL,
//Wert_ABC_DbAdapter.KEY_DESCRIPTION,
//Wert_ABC_DbAdapter.KEY_PROOF
};
int[] to = new int[] {
//R.id.tvWID,
R.id.tvWTitel,
//R.id.tvWDescription,
//R.id.tvWProof

};

SimpleCursorAdapter sca = new SimpleCursorAdapter(getActivity(),
R.layout.wert_abc_column, cur, from, to,0);
lv = (ListView) v.findViewById(R.id.listView1);
lv.setAdapter(sca);
return v;
}
}
die HelperKlasse
public class Wert_ABC_DbAdapter {
private static final String DATABASE_NAME = "werte";
private static final String SQLITE_TABLE = "wert_abc";
private static final int DATABASE_VERSION = 1;

public static final String KEY_ROWID = "_id";
public static final String KEY_TITEL = "titel";
public static final String KEY_DESCRIPTION = "description";
public static final String KEY_PROOF = "proof";

private static final String TAG = "Wert_ABC_DbAdapter";
private DatabaseHelper mDbHelper;

private SQLiteDatabase mDb;
private final Context mCtx;

private static final String DATABASE_CREATE =
"CREATE TABLE if not exists " + SQLITE_TABLE + " (" +
KEY_ROWID + " integer PRIMARY KEY autoincrement," +
KEY_TITEL + "," +
KEY_DESCRIPTION + "," +
KEY_PROOF + "," +

" UNIQUE (" + KEY_TITEL +"));";
private static class DatabaseHelper extends SQLiteOpenHelper {

DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}


@Override
public void onCreate(SQLiteDatabase db) {
Log.w(TAG, DATABASE_CREATE);
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 " + SQLITE_TABLE);
onCreate(db);
}
}

public Wert_ABC_DbAdapter(Context ctx) {
this.mCtx = ctx;
}

public Wert_ABC_DbAdapter open() throws SQLException {
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getReadableDatabase();
return this;
}

public void close() {
if (mDbHelper != null) {
mDbHelper.close();
}
}


public Cursor fetch_All() {
Cursor mCursor = mDb.query(SQLITE_TABLE, new String[] {KEY_ROWID,
KEY_TITEL, KEY_DESCRIPTION, KEY_PROOF},
null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;

}
}
News:
06.04.2014
Lukos 37 5
1 Antwort
0
Frage insoweit gelöst:
nach
cur = dbHelper.fetch_All();

getActivity().startManagingCursor(cur);

einfuegen und die Sache läuft.

Warum das beim Fragment so ist und beim Einlesen in die Activity anders,
kann mir das jemand sagen?
Danke
07.04.2014
Lukos 37 5

Stelle deine Sqlite-Frage jetzt!