import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class MySQLiteHandler {

    private static String TABLE_NAME = "first_aid";
    Context ctx;
    
    MySQLiteOpenHelper helper;
    SQLiteDatabase db;
    
    public MySQLiteHandler(Context ctx) {
        //helper = new MySQLiteOpenHelper(ctx);
        //db = helper.createDataBase();
        db = new MySQLiteOpenHelper().createDatabase();
    }
    
    //open
    public static MySQLiteHandler open(Context ctx) {
        return new MySQLiteHandler(ctx);
    }
    
    public static void close() {
    }
    
    public long insert(String name, String address, String tel) {
        return 0;
    }
    
    public void delete() {
    }
    
    public int update(String _id, String name, String address, String tel) {
        return 0;
    }
    
    //selcet all
    public Cursor select() {
        Cursor c = db.query(TABLE_NAME, null, null, null, null, null, null);
        return c;
    }
    
    //_id 일치 데이터 얻기
    public Cursor select(String _child) {
        Cursor c = db.query(TABLE_NAME, null, "type = ?", new String[]{ _child }, null, null, null);
        return c;
    }
    public Cursor select2(String str) {
        Cursor c = db.query(TABLE_NAME, new String[]{ "distinct"+ " " + str }, null, null, null, null, null);
        return c;
    }
    public Cursor select_type(String num) {
        Cursor c = db.query(TABLE_NAME, new String[]{ "type" }, "title_num=?", new String[]{ num }, null, null, null);
        return c;
    }
    
    public Cursor selcet_double(String str1, String str2) {
        //Cursor c = db.query("first_aid", null, "title_num=?, type_num=?", new String[]{ str1, str2 }, null, null, null);
        Cursor c = db.query(TABLE_NAME, null, "title_num=" + "'" + str1 + "'" + "and" + " " + "type_num=" + "'" + str2 + "'", null, null, null, null);
        return c;
    }
    
    public Cursor select_test(String _id) {
        Cursor c = db.query(TABLE_NAME, null, "key = ?", new String[]{ _id }, null, null, null);
        return c;
    }
}



 import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySQLiteOpenHelper {

    String savePath = "/mnt/sdcard/firstaid.db";
    //String savePath = "/data/data/com.same/databases/firstaid2.db";
    Context ctx;
    
    public SQLiteDatabase createDatabase(){
       
        SQLiteDatabase db;    
        db = SQLiteDatabase.openDatabase(savePath, null, 0 );
        
        if( db == null ){          
            try{
                InputStream myInput = ctx.getAssets().open("firstaid.db");
                String outFileName = "first.sqlite";
                OutputStream myOutput  = new FileOutputStream(savePath);
                byte[] buffer = new byte[1024];
                int length;
                while((length = myInput.read(buffer)) >0){
                    myOutput.write(buffer,0,length);                   
                }
                myOutput.flush();
                myOutput.close();
                myInput.close();       
                
            }catch(IOException e){
                //hrow new Error("Error copying database");
                e.printStackTrace();                    
            }
            
            db = SQLiteDatabase.openDatabase(savePath, null, 0 );
        }//end if
         
        return db;
    }//end createDatabase
}//end class



답변대로 퍼미션을 추가해 DB에 저장된 데이터를 에뮬이나 폰에서 셀렉문으로 가져오는건 됬는데

문제는 sqlite database browser로 DB에 데이터를 더 추가시킨 뒤 assets 에 넣어서 돌려보면

추가시킨 데이터가 불러와지지 않습니다....

프로젝트를 지웠다 다시 불러오거나 앱을 재설치해도 그대로 기존의 자료 밖에 가져올 수 없습니다...

뭐가 원인인지 몰라서 다시 한번 질문글을 남겨봅니다..





로그캣

08-18 09:48:38.231: E/AndroidRuntime(922): FATAL EXCEPTION: main
08-18 09:48:38.231: E/AndroidRuntime(922): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.same/com.same.Cont}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.os.Looper.loop(Looper.java:137)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.app.ActivityThread.main(ActivityThread.java:4424)
08-18 09:48:38.231: E/AndroidRuntime(922):     at java.lang.reflect.Method.invokeNative(Native Method)
08-18 09:48:38.231: E/AndroidRuntime(922):     at java.lang.reflect.Method.invoke(Method.java:511)
08-18 09:48:38.231: E/AndroidRuntime(922):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-18 09:48:38.231: E/AndroidRuntime(922):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-18 09:48:38.231: E/AndroidRuntime(922):     at dalvik.system.NativeStart.main(Native Method)
08-18 09:48:38.231: E/AndroidRuntime(922): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.database.AbstractCursor.checkPosition(AbstractCursor.java:400)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
08-18 09:48:38.231: E/AndroidRuntime(922):     at com.same.Cont.onCreate(Cont.java:68)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.app.Activity.performCreate(Activity.java:4465)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
08-18 09:48:38.231: E/AndroidRuntime(922):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
08-18 09:48:38.231: E/AndroidRuntime(922):     ... 11 more