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를 불러와서 리스트뷰에 뿌려주는걸 하고 싶은데
아무리 찾아봐도 원하는걸 찾을 수 없어서 여기저기 짜집기로 찾아서 하고있는데 왜 에러가 나는지를 모르겠네요..ㅠㅠ



