Как бы вы это сделали? Я не нашел никаких хороших ресурсов или решений для этого после довольно многого поиска.Java - Каков наиболее эффективный способ скопировать содержимое Android Cursor в новую базу данных SQLite?
0
A
ответ
0
Сначала убедитесь, что вы создали новый класс базы данных, в котором есть нужные вам таблицы. После этого вы можете использовать метод insertCursorInDb
. Также вызовите open()
один раз, это позволит вам писать в базу данных.
public class YourDatabase extends SQLiteOpenHelper {
// If you change the database schema, you must increment the database version.
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "yourdatabase.db";
private SQLiteDatabase database;
public YourDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void open() throws SQLException {
database = this.getWritableDatabase();
}
private void create(SQLiteDatabase database) {
database.execSQL("CREATE TABLE contacts (TEXT `name`, TEXT `number`)");
}
@Override
public void onCreate(SQLiteDatabase database) {
create(database);
}
// this function depends on the values in your cursor
public void insertCursorInDb(Cursor cursor) {
if (cursor != null) {
while (cursor.moveToNext()) {
database.execSQL("INSERT INTO contacts(`name`, `number`) VALUES (?, ?)", new String[]{cursor.getString(0), cursor.getString(1)});
}
cursor.close();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
Как было предложено, вы можете также использовать ContentValues
, то он будет так:
// this function depends on the values in your cursor
public void insertCursorInDb(Cursor cursor) {
if (cursor != null) {
while (cursor.moveToNext()) {
ContentValues values = new ContentValues();
values.put("name", cursor.getString(0));
values.put("number", cursor.getString(1));
database.insertOrThrow("contacts", null, values);
}
cursor.close();
}
}
Смежные вопросы
- 1. Каков наилучший способ скопировать базу данных?
- 2. Java - Каков наиболее эффективный способ синхронизации ArrayList?
- 3. Каков наиболее эффективный способ обрезать эту таблицу?
- 4. Каков наиболее эффективный способ хранения этих данных?
- 5. Каков наиболее эффективный способ сохранения списков?
- 6. Каков наиболее эффективный способ упорядочения строк в таблице SQLite?
- 7. Каков наиболее эффективный способ фильтрации поиска?
- 8. Каков наиболее эффективный способ сохранения HashMap?
- 9. Каков наиболее эффективный способ хранения маяков аналитики?
- 10. Каков наиболее эффективный способ обработки этой функции?
- 11. Как скопировать базу данных MySQL в SQLite
- 12. Каков наиболее эффективный способ хранения объектов в базе данных SQLCe?
- 13. Каков наиболее эффективный способ организовать множество методов?
- 14. Каков наиболее эффективный способ переназначения структуры?
- 15. Каков наиболее эффективный способ сохранения данных в базе данных MySQL
- 16. Каков наиболее эффективный способ создания базы данных SQLite из данных в файле?
- 17. Каков наиболее эффективный способ группировки данных в Parse?
- 18. Каков наиболее эффективный способ конвертировать изображение в Base64 в Android?
- 19. Каков наиболее эффективный способ реализовать это параллельно?
- 20. Каков наиболее эффективный способ подразделить большой список?
- 21. Каков наиболее эффективный способ выполнения этого кода?
- 22. Каков наиболее эффективный способ создания отчета?
- 23. Каков наиболее эффективный способ структурирования этой базы данных?
- 24. Каков наиболее эффективный способ инициализации 3D-вектора?
- 25. Каков наиболее эффективный способ одновременного сортировки трех ArrayLists в Java
- 26. Каков наиболее эффективный способ создания несортированного двоичного дерева в java?
- 27. Каков наиболее эффективный способ ввода ввода в Java?
- 28. Каков наиболее эффективный способ форматирования строк UTF-8 в java?
- 29. Каков наиболее эффективный способ чтения файла журнала в java?
- 30. Каков наиболее эффективный способ получить подмножество элементов в объекте Java?
Где вы получите 'Cursor' от? Если ответ «из SQLite», используйте «ATTACH DATABASE» и полностью переносите свои данные в SQLite, если сможете. Кроме того, использование «курсора» в качестве источника данных не влияет на производительность Java-> SQLite, поэтому применяются все стандартные правила (например, использование транзакций для минимизации записи на диск). – CommonsWare
@CommonsWare Я получил курсор из поставщика контактов ... это считается «из SQLite» и я могу использовать 'ATTACH DATABASE'? Если нет, то я буду использовать стандарты. Спасибо! – conjenks
Не совсем. Да, контакты, вероятно, хранятся в базе данных SQLite, но это не ваша база данных - у вас нет прямого доступа к файловой системе. Я подумал, возможно, что вы внедряете какую-то резервную или архивационную систему, или вы переходите из незашифрованной базы данных в зашифрованную или что-то в этом роде. В этих случаях вы будете «владеть» обеими базами данных, и прямая передача данных SQLite-> SQLite будет вариантом. – CommonsWare