public class DbObject { Context mContext; SQLiteDatabase _DB = null; private ArrayList<HashMap<String, String>> _DataSource= new ArrayList<HashMap<String, String>>(); public BaseAdapter adapter; public DbObject(Context context) { super(); mContext = context; openDatabase(); String[] from = new String[]{"name", "city", "location"}; int[] to = new int[] {R.id.txt1, R.id.txt2 , R.id.txt3}; adapter = new SimpleAdapter(mContext, _DataSource, R.layout.list_row, from, to); Refresh(); } public void openDatabase() { _DB = mContext.openOrCreateDatabase("gp.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); } public void Refresh() { Cursor _Cursor = _DB.rawQuery("select * from gp", null); if(_Cursor.moveToFirst()) { // 커서의 첫번째 부터 검색 do { HashMap<String, String> _Item = new HashMap<String, String>(); // 해쉬맵 선언 _Item.put("name", _Cursor.getString(0).toString()); // 컬럼이름 , getString(0)첫번째 컬럼(String형으로 변환) _Item.put("city", _Cursor.getString(1).toString()); // 컬럼이름 , getString(0)첫번째 컬럼(String형으로 변환) _Item.put("location", _Cursor.getString(2).toString()); // 컬럼이름 , getString(0)첫번째 컬럼(String형으로 변환) _DataSource.add(_Item); } while(_Cursor.moveToNext()); // 다음컬럼 검색 adapter.notifyDataSetChanged(); } } }
db파일을 가져와서 연동을 시킬려고하는데 계속 Refresh()에서 gp table을 찾을수 없다고 나옵니다.. 연동이 안되고있는건가요??ㅜㅜ
try { File folder = new File("/data/data/com.exam.Dbtest2/databases/"); folder.mkdirs(); File outfile = new File("data/data/com.exam.Dbtest2/databases/gp.db"); outfile.createNewFile(); AssetManager assetManager = getResources().getAssets(); InputStream is; is = assetManager.open("databases/gp.db", AssetManager.ACCESS_BUFFER); long filesize = is.available(); if(outfile.length() < filesize) { byte[] tempdata = new byte[(int) filesize]; is.read(tempdata); is.close(); outfile.createNewFile(); FileOutputStream fo = new FileOutputStream(outfile); fo.write(tempdata); fo.close(); } }catch (IOException e) { e.printStackTrace(); } }
이건 리스트뷰가 있는 액티비티에서 추가시킨 인터넷에서 찾은 db파일 연동하는 소스라고해서 붙여넣었습니다..
Caused by: android.database.sqlite.SQLiteException: no such table: gp: , while compiling: select * from gp
at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1315)
at com.exam.Dbtest2.DbObject.Refresh(DbObject.java:56)
at com.exam.Dbtest2.DbObject.<init>(DbObject.java:41)
at com.exam.Dbtest2.dbtest.onCreate(dbtest.java:27)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
... 11 more
로그캣입니다.
초보라서 책따라 공부하고있는데 개인적으로 DB를 불러와서 리스트뷰에 뿌려주는걸 하고 싶은데
아무리 찾아봐도 원하는걸 찾을 수 없어서 여기저기 짜집기로 찾아서 하고있는데 왜 에러가 나는지를 모르겠네요..ㅠㅠ