Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > SQLite backup to file


Автор: falcon39 2.8.2015, 22:58
Помогите разобраться в простейшем примере с БД SQLite
Код

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class start {
    
    public static void main(String[] argc) throws ClassNotFoundException, SQLException{
            Class.forName("org.sqlite.JDBC");
            Connection conn = DriverManager.getConnection("jdbc:sqlite:");
            Statement stmt = conn.createStatement();
// Do some updates
            stmt.executeUpdate("create table sample(id, name)");
            stmt.executeUpdate("insert into sample values(1, \"leo\")");
            stmt.executeUpdate("insert into sample values(2, \"yui\")");
// Dump the database contents to a file
            stmt.executeUpdate("backup to backup.db");

    }
    
}


При запуске получаю ошибку
Exception in thread "main" java.sql.SQLException: near "backup": syntax error
at org.sqlite.DB.throwex(DB.java:291)
at org.sqlite.NestedDB.prepare(NestedDB.java:124)
at org.sqlite.DB.prepare(DB.java:117)
at org.sqlite.Stmt.executeUpdate(Stmt.java:96)
at start.main(start.java:17)
Java Result: 1

Автор: AntonSaburov 3.8.2015, 10:04
Я бы попробовал саму команду backup - она в каком-нибудь клиенте выполняется вообще ?

Автор: falcon39 3.8.2015, 12:49
Вопрос тогда в том как правильно сделать. Суть в том что БД должна быть создана в памяти, после манипуляций с ней при закрытии программы сброшена в файл на диске, а при следующем запуске обратно загружена в память. Потому как когда просто с файлом работаешь, то обновление и добавление записей идет очень долго, а данных много.

Автор: tzirechnoy 3.8.2015, 15:44
Цитата
 то обновление и добавление записей идет очень долго, а данных много.


(пожав плечами) Ну, создай временную таблицу в базе temp. Можно и новую базу :memory: подключить (ATTACH DATABASE ':memory:' AS inmem), но лучшэ в temp. И потом одним INSERT ... SELECT их перекладывай.

Автор: AntonSaburov 3.8.2015, 15:52
Это надо смотреть непосредственно документацию SQLite - что он предлагает для бэкапа таблиц в памяти на диск и их восстановления из файла опять в память. Может оказаться, что из Java это вообще сделать просто так не получится.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)