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

외부데이터 베이스 적용하는데 문제가 생겼어요.....

0 추천
public class DatabaseAccess {

    private SQLiteOpenHelper openHelper;
    private SQLiteDatabase db;
    private static DatabaseAccess instance;
    public static String TABLENAME = "bible2+1";
    Cursor c = null;
    ArrayList<String> book;
    static String T = "log";


    private DatabaseAccess (Context context){
        Log.d(T, "3");
        this.openHelper = new DatabaseOpenHelper(context);

    }

    public static DatabaseAccess getInstance(Context context){
        if(instance == null){
            Log.d(T, "2");
            instance = new DatabaseAccess(context);
        }
        return instance;
    }
    //open bible database


    //read bible database
    public void read(){
        Log.d(T, "8");
        this.db = openHelper.getReadableDatabase();
    }
    //close bible database
    public void close() {
        if (db != null) {
            this.db.close();
        }
    }

    //query for address by passing name

    public ArrayList<String> getBook() {
        String compare = null;
        c = db.rawQuery("select * from "+TABLENAME ,null);
        while(c.moveToNext()){
            if(!compare.equals(c.getString(7)))
            compare = c.getString(7);
            book.add(compare);
        }
        return book;

    }


}
package com.example.chahyunbin.cwapp;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

public class DatabaseOpenHelper extends SQLiteAssetHelper {

    private static final String DATABASE_NAME = "bible2+1.sql";
    private static final int DATABASE_VERSTION = 1;
    String T = "log";




    public DatabaseOpenHelper(Context context) {

        super(context, DATABASE_NAME,null, DATABASE_VERSTION);
        Log.d(T, "4 ");
    }
}
public class Bible extends Activity{
    Context mContext;
    DatabaseAccess dbAccess;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bible);

        String T = "log";


        ArrayList<String> book,chapter, verse;
        chapter = new ArrayList<String>();
        verse = new ArrayList<String>();

        Log.d(T,"1");
        dbAccess= DatabaseAccess.getInstance(getApplicationContext());
        Log.d(T,"5");

        Log.d(T, "7");
        dbAccess.read();
        Log.d(T, "9");


        book = dbAccess.getBook();








        Spinner bibleSpinner = (Spinner)findViewById(R.id.bibleSpinner);
        Spinner chapterSpinner = (Spinner)findViewById(R.id.chepterSpinner);
        Spinner verseSpinner = (Spinner)findViewById(R.id.verseSpinner);

        ArrayAdapter<String> bibleadapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,book);
        ArrayAdapter<String> chapteradapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,chapter);
        ArrayAdapter<String> verseadapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, verse);

        bibleadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        chapteradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        verseadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        bibleSpinner.setAdapter(bibleadapter);
        chapterSpinner.setAdapter(chapteradapter);
        verseSpinner.setAdapter(verseadapter);
dbAccess.close();


    }
}
-- phpMyAdmin SQL Dump
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";



-- 데이터베이스: `q`
--

-- --------------------------------------------------------

--
-- 테이블 구조 `bible2`
--

CREATE TABLE IF NOT EXISTS `bible2` (
  `idx` int(11) NOT NULL AUTO_INCREMENT,
  `cate` int(11) NOT NULL,
  `book` int(11) NOT NULL,
  `chapter` int(11) NOT NULL,
  `paragraph` int(11) NOT NULL,
  `sentence` tinytext NOT NULL,
  `testament` varchar(10) NOT NULL,
  `long_label` varchar(30) NOT NULL,
  `short_label` varchar(10) NOT NULL,
  PRIMARY KEY (`idx`),
  KEY `idx_sequense` (`book`,`chapter`,`paragraph`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=31139 ;

--
-- 테이블의 덤프 데이터 `bible2`
--

INSERT INTO `bible2` (`idx`, `cate`, `book`, `chapter`, `paragraph`, `sentence`, `testament`, `long_label`, `short_label`) VALUES
(1, 1, 1, 1, 1, '<천지 창조> 태초에 하나님이 천지를 창조하시니라', '구', '창세기', '창'),
(2, 1, 1, 1, 2, '땅이 혼돈하고 공허하며 흑암이 깊음 위에 있고 하나님의 영은 수면 위에 운행하시니라', '구', '창세기', '창'),
(3, 1, 1, 1, 3, '하나님이 이르시되 빛이 있으라 하시니 빛이 있었고', '구', '창세기', '창'),
(299, 1, 1, 11, 32, '데라는 나이가 이백오 세가 되어 하란에서 죽었더라', '구', '창세기', '창'),
(300, 1, 1, 12, 1, '<여호와께서 아브람에게 이르시다> 여호와께서 아브람에게 이르시되 너는 너의 고향과 친척과 아버지의 집을 떠나 내가 네게 보여 줄 땅으로 가라', '구', '창세기', '창'),
(301, 1, 1, 12, 2, '내가 너로 큰 민족을 이루고 네게 복을 주어 네 이름을 창대하게 하리니 너는 복이 될지라', '구', '창세기', '창'),
(302, 1, 1, 12, 3, '너를 축복하는 자에게는 내가 복을 내리고 너를 저주하는 자에게는 내가 저주하리니 땅의 모든 족속이 너로 말미암아 복을 얻을 것이라 하신지라', '구', '창세기', '창');

 

 

성경앱을 만들어 보려고 하는데

맨 아래가 인터넷으로 다운받은 데이터 베이스고 그 위가 코드들인데 

    android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 1294): Could not open database
    #################################################################
    Error Code : 1294 (SQLITE_CANTOPEN_ENOENT)
    Caused By : Specified directory or database file does not exist.
        (unknown error (code 1294): Could not open database)
    #################################################################
        at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
        at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:272)
        at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:213)
        at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:699)
    

이런 에러가 뜨는데 제가 뭘 잘못한건가요.... 정말 모르겠네요.....

aofhdzzz1 (690 포인트) 님이 2018년 10월 19일 질문

1개의 답변

0 추천
sql은 db 내용을 갖고 있는거지 db가 아닙니다.

저 sql 파일을 실행해서 db에 밀어넣고, 그렇게 만들어진 db파일을 DATABASE_NAME = "bible2+1.sql"; 에 넣어야 합니다.

sqlite viewer, sqlite browser같은 걸로 검색하면 프로그램 나올텐데, 거기에 sql 실행하는 기능도 대부분이 있으니 거기서 저 sql 내용을 긁어다 붙여넣고 실행해보세요.
쎄미 (162,410 포인트) 님이 2018년 10월 19일 답변
감사합니다~ 말씀하신 프로그램이 db browser for sql이런 프로그램을 말씀하시는 건가요?? 만약 이 프로그램이 맞다면 혹시 구체적으로 어디에 복사 붙여넣기를 어떻게 해야하는지 방법을 알려주실수 있으신가요....??
sqlite의 내용을 보는 프로그램은 널리고 널려서 아무 거나 쓰셔도 됩니다. 그런 프로그램들은 보통은 excute sql 같은 기능이 있어서 sql문 넣어서 실행할 수 있게 해놨습니다. 이름은 다르지만 'sql 실행' 느낌으로 된 단어 찾으시면 됩니다.
...