Как SQLite на Android обрабатывает длинные строки? - PullRequest
4 голосов
/ 18 июня 2010

Мне интересно, как реализация SQLite в Android обрабатывает длинные строки.Читая онлайн-документацию по sqlite, он сказал, что строки в sqlite ограничены 1 миллионом символов.Мои строки определенно меньше.

Я создаю простое приложение RSS, и после анализа html-документа и извлечения текста у меня возникают проблемы с сохранением его в базе данных.У меня есть 2 таблицы в базе данных, feeds и articles.RSS-каналы правильно сохраняются и извлекаются из таблицы feeds, но при сохранении в таблицу articles logcat говорит, что не может сохранить извлеченный текст в свой столбец.Я не знаю, если другие колонки тоже создают проблемы, не упоминая их в logcat.

Мне интересно, так как текст взят из статьи в Интернете, являются ли знаки, такие как (", ';;), создающие проблемы? Android автоматически их избегает, или я должен это сделать. Я используюметод вставки, аналогичный описанному в учебнике блокнота:

public long insertArticle(long feedid, String title, String link, String description, String h1,tring h2, String h3, String p, String image, long date) {
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_FEEDID, feedid);
    initialValues.put(KEY_TITLE, title);
    initialValues.put(KEY_LINK, link);
    initialValues.put(KEY_DESCRIPTION, description );
    initialValues.put(KEY_H1, h1 );
    initialValues.put(KEY_H2, h2);
    initialValues.put(KEY_H3, h3);
    initialValues.put(KEY_P, p);
    initialValues.put(KEY_IMAGE, image);
    initialValues.put(KEY_DATE, date);
    return mDb.insert(DATABASE_TABLE_ARTICLES,null, initialValues);
}

Столбец P предназначен для извлеченного текста, h1, h2 и h3 - для заголовков страницы. Logcat сообщает о наличии только столбца p.таблица создается с помощью следующего оператора:

private static final String DATABASE_CREATE_ARTICLES =
    "create table articles( _id integer primary key autoincrement, feedid integer, title text, link text not null, description text," + "h1 text, h2 text, h3 text, p text, image text, date integer);";

1 Ответ

7 голосов
/ 18 июня 2010

Поскольку Android использует SQLite в качестве бэкэнда, все поля имеют переменную длину.Ограничение длины поля sqlite по умолчанию составляет 1 миллиард символов, но Android, возможно, изменил это.

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