1
나는 데이터베이스에서 데이터로 커서를 가져와야하는 주요 Activity, SQLiteOpenHelper 클래스 및 Fragment를가집니다. 내 주요 활동 내부android.database.StaleDataException : 닫힌 커서에 액세스
내가 저장하고 정적 public 멤버로, 데이터베이스를 시작 :
public class Main extends FragmentActivity {
public static Main MainActivity;
public static DBHelper Database;
@Override
public void onCreate(Bundle savedInstanceState) {
MainActivity = this;
Database = new Database(getApplicationContext(), "db_test", null, 1);
}
}
이 내 데이터베이스의 클래스가 같은 모습입니다 : 내 조각 내부
public class DBHelper extends SQLiteOpenHelper {
public static final String MAIN_TABLE = "tbl_list";
public DBHelper(Context c, String n, CursorFactory f, int v) {
super(c, n, f, v);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(
"CREATE TABLE IF NOT EXISTS " + MAIN_TABLE + " (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name VARCHAR (64) NOT NULL, " +
"status TEXT DEFAULT NULL " +
")"
);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
}
, 내가 모든 레코드가있는 목록을 검색하려고합니다 :
public class MyFrag extends Fragment {
private DBHelper db;
@Override
public View onCreateView(LayoutInflater i, ViewGroup v, Bundle b) {
db = Main.Database.getWritableDatabase();
}
private void showList() {
ListView list_view= new ListView(Main.MainActivity);
String[] data = { "_id", "name", "status" };
Cursor c = db.query(Database.TASKS_TABLE, data, null, null, null, null, null);
c.moveToFirst();
if (c.getCount() > 0) {
String[] columns = new String[] { "name", "status" };
int[] views = new int[] {
R.id.item_name,
R.id.item_status
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
Main.MainActivity,
R.layout.mylist,
c,
columns,
views,
0
);
list_view.setAdapter(adapter);
}
}
}
나는 응용 프로그램을 실행할 때 의 오류 : 당신이 그것을 액세스 할 수있는 방법이 없다, 그래서 당신은 데이터베이스에 대한 연결을 열지 않았다 android.database.StaleDataException: Access closed cursor
게시 전체 스택 추적 – pskink