Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Вы не говорите, что Вы хотите сделать с выведенным файлом.
я использовал бы следующее для получения файла CSV, в который я могу импортировать почти все
.mode csv
-- use '.separator SOME_STRING' for something other than a comma.
.headers on
.out file.csv
select * from MyTable;
, Если Вы хотите повторно вставить в различную базу данных SQLite тогда:
.mode insert <target_table_name>
.out file.sql
select * from MyTable;
Лучший метод должен был бы взять код, который sqlite3 дамп дб сделает, исключая части схемы.
Пример псевдо код:
SELECT 'INSERT INTO ' || tableName || ' VALUES( ' ||
{for each value} ' quote(' || value || ')' (+ commas until final)
|| ')' FROM 'tableName' ORDER BY rowid DESC
См.: src/shell.c:838
(для sqlite-3.5.9) для фактического кода
Вы могли бы даже просто взять ту оболочку и прокомментировать части схемы и использование это.
Не лучшему способу, но в арендном договоре не нужны внешние инструменты (кроме grep, который является стандартным на *, отклоняют поля так или иначе)
sqlite3 database.db3 .dump | grep '^INSERT INTO "tablename"'
, но действительно необходимо сделать эту команду для каждой таблицы, которую Вы ищете все же.
Примечание, что это не включает схему.
Вы могли сделать выбор на таблицах, вставляющих запятые после каждого поля, чтобы произвести csv или использовать инструмент GUI, чтобы возвратить все данные и сохранить его к csv.
В специальной команде .dump можно указать один или несколько аргументов таблицы, напримерsqlite3 db ".dump 'table1' 'table2'""
.