마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

no such table 에러

0 추천

엑셀을 sqlite로 변경한 후 assets폴더에 넣었습니다.

public static void DBcopy(Resources _res, String db_name)
{
String dir="data/data/주소/";
        File folder = new File(dir+"assets");
        folder.mkdirs(); 
        File outfile = new File(dir+"assets/"+db_name); 
        if(outfile.length() <= 0) 
        {
        AssetManager assetManager = _res.getAssets(); 
        try 
        {
        InputStream is = assetManager.open(db_name, AssetManager.ACCESS_BUFFER); 
        long filesize = is.available(); 
        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();
       
        }
}
 
private void db() {
// TODO Auto-generated method stub
String db_name= "aaa.sqlite"; //sqlite 이름
String db_table_name= "aaa"; //table 이름
SQLiteDatabase myDB;
Cursor allRCD;
 
DBcopy(getResources(), db_name);
myDB = getApplicationContext().openOrCreateDatabase(db_name, 0, null);
allRCD = myDB.query(db_table_name, null, null, null, null, null, null);
myDB.close();
}

 

sqlite 이름과 table이름이 같아서 그런걸까 하고 수정해봤지만 결과는 같았구요

sqlite에 내용이 들어가있는것도 확인했어요 이름을 잘못썼을까 몇번 확인했는데 결과는 같네요..ㅠ

아 그리고 no such table 나오기전에

SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 이런 에러가 두개떠있는데 혹시 이것때문인가요?

익명사용자 님이 2013년 8월 2일 질문

3개의 답변

0 추천
table을 만드는 쪽 소스를 보여주셔야 할듯 싶네여

no such table 말그대로 테이블이 없어서 나는 오류입니다.

위에 떠있는 에러문구는 상관없습니다.
Gradler (109,780 포인트) 님이 2013년 8월 2일 답변
0 추천
no such table의 경우는 대개 테이블명이 잘못되었을때 나타나는 에러입니다.

테이블명이 제대로되었는지 만들때와 검색할때 테이블명을 찍어보세요.

사용불가된 단어로 테이블명을 만든건 아닌지도 확인해보세요.
기초개발자 (24,060 포인트) 님이 2013년 8월 2일 답변
0 추천

inputream에 바이트 담아서 write다 하고나서 close()를 불러야 되는거 아닌가요?

inputstream에서 실컷 바이트 읽어들이고 닫아버린채로 write하니 그런거같네요

 

음 소스좀 다시 보니까

byte[] tempdata = new byte[(int)filesize]; 
        is.read(tempdata); 
        is.close(); 
        outfile.createNewFile(); 
        FileOutputStream fo = new FileOutputStream(outfile); 
        fo.write(tempdata); <---??????
        fo.close(); 
정체가 뭔가요???
 
JAVA FILE I/O 검색 해보세요...
bangbang (8,820 포인트) 님이 2013년 8월 2일 답변
bangbang님이 2013년 8월 2일 수정
...