Ошибка с классом Android DBAdapter - PullRequest
1 голос
/ 24 июня 2010

вот ошибка из logcat моей программы.

06-24 01: 35: 04.213: INFO / ActivityManager (587): Начало деятельности: намерение {comp = {one.two / one.two.Arrival}} 06-24 01: 35: 04.521: ОШИБКА / DBDroid (1048): android.database.sqlite.SQLiteException: нет такой таблицы: порт: при компиляции: SELECT KEY_STATUS, KEY_ID, KEY_ARRIVAL, KEY_DESTINATION, KEY_FERRY FROM ferry 06-24 01: 35: 05.026: INFO / ActivityManager (587): отображаемое действие one.two /. Прибытие: 805 мс

Кажется, заявлено, что нет таблицы с именем port. Но у меня есть таблица с именем port, помещенная в эмулятор, в data / data / one.two / database

А вот мой частичный код DBAdapter:

    public class DBAdapter extends ListActivity {
public static  String KEY_STATUS = "status";
public static  String KEY_ID = "id";
public static  String KEY_ARRIVAL = "arrival";
public static  String KEY_DESTINATION = "destination";
public static  String KEY_FERRY = "ferry";

private static final String DATABASE_NAME = "ferry";
private static final String DATABASE_TABLE = "port";

private static final int DATABASE_VERSION = 1;

 private static  Context context;
 private static DatabaseHelper DBHelper;
 private static SQLiteDatabase db;

Кстати, кто-нибудь здесь знает, что делает этот метод:

public DBAdapter(Context ctx)
{
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper
{
    DatabaseHelper(Context context)
    {
        super(context, "ferry", null, 1);
    }

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

    @Override
    public void onCreate(SQLiteDatabase db)
    {
    }
}//end DatabaseHelper

// ---opens the database---
public DBAdapter open() throws SQLException
{
    db = DBHelper.getWritableDatabase();
    return this;
}

// ---closes the database---
public void close()
{
    DBHelper.close();
}

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 июня 2010

Вы должны поместить код создания таблицы в метод DatabaseHelper.onCreate() - операторы SQL CREATE для всех таблиц, которые вы собираетесь использовать в других запросах.

редактирование:

Если вы не предоставляете файл ".db", уже созданный за пределами Android (например, с помощью инструмента SQLite Database Browser - http://sqlitebrowser.sourceforge.net) в вашем пакете приложения (например, уже заполненный данными). Тогда вам не нужно поместите здесь любой код (, кроме того , если вы поместите код, который попытается создать существующую таблицу, вы получите исключение SQL).

0 голосов
/ 24 июня 2010

Вы абсолютно уверены, что таблица существует?

Попробуйте открыть базу данных, используя следующие команды из оболочки (я думаю, DATABASE_NAME - это имя файла базы данных):

adb shell
sqlite3 /data/data/one.two/databases/ferry

SQLiteКонсоль должна открыться.А затем перечислите таблицы:

.tables

Используйте .quit для выхода из SQLite.

edit:

Если вашфайл базы данных - ferry.db, тогда DATABASE_NAME также должен быть "ferry.db"

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