Android & SQLite: «В аудиозаписи таблицы нет названного загруженного столбца» - PullRequest
1 голос
/ 06 мая 2010

Я получаю это странное исключение, когда запускаю свое приложение как на эмуляторе, так и на устройстве, подключенном через USB.я могу видеть таблицу внутри оболочки, но когда я пытаюсь вставить запись из Актона Activity, я получаю следующее исключение:

android.database.sqlite.SQLiteException: у таблицы аудиозаписей нетколонка с именем скачано

В основном я работаю на эмуляторе с Android 1.5.Преобладающая часть моего кода связана с этим руководством - http://www.devx.com/wireless/Article/40842/1954.

Это оператор создания, который я использую:

 private static final String DATABASE_CREATE =
  "create table audios ( _id integer primary key autoincrement, "
  + "user_name text not null, title text not null, file_path text not null, download integer not null, " 
  + "created_at integer not null, downloaded_at integer not null );";

Это код вставки, который я использую:

//--- insert a title into the database ---
 public long insertTitle(String user_name, String title, String file_path, Integer downloaded, long created_at, String downloaded_at ) {
  ContentValues initialValues = new ContentValues();
  initialValues.put(KEY_USER_NAME, user_name);
  initialValues.put(KEY_TITLE, title);
  initialValues.put(KEY_FILE, file_path);
  initialValues.put(KEY_DOWNLOADED, downloaded);
  initialValues.put(KEY_CREATED_AT, created_at);
  initialValues.put(KEY_DOWNLOADED_AT, downloaded_at);
  return db.insert(DATABASE_TABLE, null, initialValues);
 }

Ответы [ 3 ]

2 голосов
/ 06 мая 2010

Я рискну предположить, что у вас есть это в вашем коде:

public static final String KEY_DOWNLOADED = "downloaded";

Причина сообщения об ошибке заключается в том, что ...

В таблице аудиозаписей нет столбца с именем скачанного

Действительно. Это не так, как говорится в сообщении об ошибке.

Если вы перечитаете свой SQL для создания таблицы, вы заметите, что имя столбца на самом деле download, а не download ed .

Поэтому исправьте ваш код, чтобы использовать правильное имя столбца, и вы должны быть установлены. Обратите внимание, что исправление кода может означать либо:

  1. изменив имя столбца в вашей таблице на downloaded вместо download. Лично я бы пошел с этим, если у вас нет большого количества другого кода, уже использующего download, так как download, на мой взгляд, или a download или to download, а не has been downloaded, но это действительно зависит от его фактического смысл
  2. изменение имени столбца в SQL, который обращается к таблице, для использования того же имени столбца, что и у таблицы
0 голосов
/ 06 июня 2013

Мой случай немного отличается, но сообщение об ошибке то же самое. Msgstr "Таблица ххх, нет столбца с именем yyy". Я отвечаю здесь, так что, если кто-то также "смотрит в дыры в экране", может найти подсказку. Если вы определили свою таблицу с заполнителями, как это:

    private static final String SQL_CREATE_VISITA = String.format("CREATE TABLE %s (%s INTEGER PRIMARY KEY AUTOINCREMENT, %s %s, %s %s, %s %s, %s %s, %s %s, %s %s)", 
        TableVisit.NAME,
        TableVisit.COL_NR_VISITA,
        TableVisit.COL_TP_CASA,
        FIELD_TEXT,
        TableVisit.COL_NR_CASA, 
        FIELD_INTEGER,
        TableVisit.COL_BENS_MOVEIS,
        FIELD_INTEGER,
        TableVisit.COL_DT_VISITA,
        FIELD_TEXT,
        TableVisit.COL_NR_COMODOS,
        FIELD_INTEGER,
        TableVisit.COL_NR_ISENCAO,
        FIELD_INTEGER,
        TableVisit.COL_NR_QUARTOS,
        FIELD_INTEGER
        );

всегда тщательно подсчитывайте количество заполнителей. Если вы пропустите 2, как в этом примере кода, при добавлении другого поля может быть создана таблица с сообщением об ошибке, упоминаемой только при попытке вставить новую запись в таблицу. (мой первый ответ здесь, поэтому любые комментарии приветствуются.)

0 голосов
/ 09 августа 2011

Если вы создали таблицу без этого столбца для ранее, а затем добавили этот столбец, просто измените версию базы данных, затмение удалит старую базу данных и создаст новую базу данных.

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