2016-06-03 3 views
0

Я только начал с sqlite, и я застрял со странным (возможно, только для меня) явлением. Когда я подключаю файл testDB.db в java и делаю один или несколько запросов, данные и сама таблица исчезают. Консоль сказал, что ошибка SQL или отсутствующая база данных, и когда я проверяю файл базы данных в cmd, ситуация действительно такова; в файле нет данных. Может ли кто-нибудь помочь мне с этой основной проблемой? (Я предполагаю, что это просто из-за отсутствия моих знаний в этой теме, но я открыт для новой информации)IntelliJ извлекает данные из файла базы данных sqlite?

public class jdbcTest{ 

public static void main(String[] strg) { 

    Connection connection = null; 
    try { 
     connection = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Username\\Documents\\sqlite\\testDB"); 
     Statement statement = connection.createStatement(); 
     statement.setQueryTimeout(30); 

     //statement.executeUpdate("drop table if exists person"); 
     ResultSet rs = statement.executeQuery("select * from company"); 
     while (rs.next()){ 
      System.out.print("id = "+rs.getInt("id")+" "); 
      System.out.println("name = "+rs.getString("name")); 
     } 
    } 
    catch (SQLException e) { 
     System.err.println(e.getMessage()); 
    } 
    finally { 
     try { 
      if (connection!=null){ 
       connection.close(); 
      } 
     } 
     catch (SQLException e){ 
      System.err.println(e); 
     } 
    } 
} 

}

+0

Не должна ли ваша строка соединения заканчиваться 'testDB.db'? – Berger

+0

Я тоже использовал этот файл, но то же самое произошло. Простой файл testDB был создан в cmd с помощью команды .save testDB для сохранения базы данных. – Gregito

ответ

0

При открытии несуществующего файла базы данных SQLite будет счастливо создавать новый, пустой.

Имя файла, которое вы указываете getConnection, фактически не указывает на сохраненную вами базу данных.

+0

Возможно, я нашел источник проблемы. Когда я разлагаю statement.executeUpdate («drop table if exists person»); line (и изменить параметр person для компании (которая является единственной таблицей в моем db-файле)), появляется ошибка SQL или отсутствующее сообщение db, и с этого момента таблица исчезнет из моего файла и сделает ее пустой (не только для intellij, но и для sqlite тоже) Но что это за линия и как я могу ее использовать, чтобы не убить мой db? – Gregito

Смежные вопросы