Конструктор Restaurant.DBHelper (Ресторан) не определен - PullRequest
1 голос
/ 25 марта 2012

Я следовал руководству, где мне нужно подключить базу данных SQLite к затмению.Но каким-то образом я всегда получаю эту ошибку, и у меня была эта ошибка, но в ней все еще была ошибка?

public Restaurant open() throws SQLException
{
    ourHelper = new DBHelper(this);

это ссылка, по которой я перешел: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

 public class Restaurant {
public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "name";
public static final String KEY_DETAIL = "detail";
public static final String KEY_PRICE = "price";


private static final String DATABASE_NAME ="Restaurantdb";
private static final String DATABASE_TABLE ="Food";
private static final int DATABASE_VERSION = 1;
private static String DB_PATH = "/data/data/com.restaurant.sesame/databases/";

private static SQLiteDatabase ourDatabase;
private final Context ourContext;
private DBHelper ourHelper;


public class DBHelper extends SQLiteOpenHelper{


    private final Context myContext;


    public DBHelper(Context context) {

        super(context, DATABASE_NAME, null, 1);
        this.myContext = context;
    }   


    public void createDataBase() throws IOException{

        boolean dbExist = checkDataBase();

        if(dbExist){
            //do nothing - database already exist
        }else{


            this.getReadableDatabase();

            try {

                copyDataBase();

            } catch (IOException e) {

                throw new Error("Error copying database");

            }
        }

    }


    private boolean checkDataBase(){

        SQLiteDatabase checkDB = null;

        try{
            String myPath = DB_PATH + DATABASE_NAME;
            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

        }catch(SQLiteException e){

            //database does't exist yet.

        }

        if(checkDB != null){

            checkDB.close();

        }

        return checkDB != null ? true : false;
    }


    private void copyDataBase() throws IOException{

        //Open your local db as the input stream
        InputStream myInput = myContext.getAssets().open(DATABASE_NAME);

        // Path to the just created empty db
        String outFileName = DB_PATH + DATABASE_NAME;

        //Open the empty db as the output stream
        OutputStream myOutput = new FileOutputStream(outFileName);

        //transfer bytes from the inputfile to the outputfile
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer))>0){
            myOutput.write(buffer, 0, length);
        }

        //Close the streams
        myOutput.flush();
        myOutput.close();
        myInput.close();

    }

    public void openDataBase() throws SQLException{

        //Open the database
        String myPath = DB_PATH + DATABASE_NAME;
        ourDatabase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

    }

    @Override
    public synchronized void close() {

            if(ourDatabase != null)
                ourDatabase.close();

            super.close();

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }



}
public Restaurant(Context c)
{   
    ourContext = c;
}

public Restaurant open() throws SQLException
{
    ***ourHelper = new DBHelper(this);***


    try {

        ourHelper.createDataBase();

} catch (IOException ioe) {

    throw new Error("Unable to create database");

}

try {

    ourHelper.openDataBase();

}catch(SQLException sqle){

    throw sqle;

}
    return this;
}

public void close()
{
    ourHelper.close();
}

Ответы [ 2 ]

0 голосов
/ 25 марта 2012

ну, конечно, вы получите эту ошибку ... вы закомментировали конструктор класса DBHelper, и компилятор не может найти его, когда вы вызываете конструктор ...

проверьте эти руководства http://thenewboston.org/list.php?cat=6 .... они шаг за шагом помогут вам установить соединение с базой данных

надеюсь, это поможет

0 голосов
/ 25 марта 2012

Вам необходимо указать правильный контекст. Могу поспорить, что конструктор ищет аргумент как:

new DBHelper(MyActivity.this);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...