Перейти к содержимому

Фотография

Как выполнить SQL в .sqlite


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 defonus

defonus

    Новый участник

  • Members
  • Pip
  • 32 сообщений

Отправлено 31 октября 2013 - 10:00

Привет.
Есть база из мобильного приложения name.sqlite. Необходимо подключиться к этой базе и выполнить sql запрос.
Для подключения использую
 Class.forName("org.sqlite.JDBC");

    		
            String dbURL = "jdbc:sqlite:/users/andrei_tsiarenia/Downloads/mobile2.sqlite";

            
            Connection conn = DriverManager.getConnection(dbURL);

            if (conn != null) {
            	Statement st = null;
            	
            	
			
						st = conn.createStatement();
						ResultSet rs = null;
									
						rs = st.executeQuery("SELECT * FROM ZCRBRAND");
						
						
	
  while (rs.next()) {
	  System.out.print("Str1 " + rs.getString(6) //rs.getString("ZDISPLAYNAME")
+ " Str2 " + rs.getString(7));
				} 
} 

все валится на строке "rs = st.executeQuery("SELECT * FROM ZCRBRAND");" с ошибкой
java.sql.SQLException: [SQLITE_NOTADB]  File opened that is not a database file (file is encrypted or is not a database)
	at org.sqlite.DB.newSQLException(DB.java:383)
	at org.sqlite.DB.newSQLException(DB.java:387)
	at org.sqlite.DB.throwex(DB.java:374)
	at org.sqlite.NestedDB.prepare(NestedDB.java:134)
	at org.sqlite.DB.prepare(DB.java:123)
	at org.sqlite.Stmt.execute(Stmt.java:113)

Подскажите в чем ошибка и как выполнить sql в этой sqlite?
  • 0

#2 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 31 октября 2013 - 12:51

Подскажите в чем ошибка и как выполнить sql в этой sqlite?

После гугления (а Вы пробовали гуглить?) и сопоставления с Вашей ошибкой

[SQLITE_NOTADB] File opened that is not a database file (file is encrypted or is not a database)

я понял, что файл БД должен иметь расширение *.db и быть файлом базы данных. Ваш файл mobile2.sqlite является файлом базы данных?
Пример из гугла:
Connection c = null;
    try {
      Class.forName("org.sqlite.JDBC");
      c = DriverManager.getConnection("jdbc:sqlite:test.db");
    } catch ( Exception e ) {
      System.err.println( e.getClass().getName() + ": " + e.getMessage() );
      System.exit(0);
    }
В Вашем случае должно быть что-то вроде
String dbURL = "jdbc:sqlite:/users/andrei_tsiarenia/Downloads/mobile2.db";

  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#3 defonus

defonus

    Новый участник

  • Members
  • Pip
  • 32 сообщений

Отправлено 31 октября 2013 - 13:00

Спасибо.
Да, гуглил. В нете, в основном примеры с файлами db, но попадались примеры и с моим расширеним(на ютубе)...пробовал убрать wal, добавить проперти - пока ничего не помогло (

Меня просто интересует получилось ли у кого-нибудь работать Именно с расширением .sqlite
  • 0

#4 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 31 октября 2013 - 13:42

Расширение файла не имеет значения. Для начала попробуйте открыть базу, каким-нибудь sqlite менеджером (например, http://sqliteman.com/) и убедитесь что она не бита и не зашифрована.

String dbURL = "jdbc:sqlite:/users/andrei_tsiarenia/Downloads/mobile2.sqlite";
Я не знаю, как правильно работать с sqlite в Java, но разве здесь не должен быть полный путь к базе? Что-то вроде jdbc:sqlite:c:/users/andrei_tsiarenia/Downloads/mobile2.sqlite
  • 0

#5 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 31 октября 2013 - 14:16

Расширение файла не имеет значения. Для начала попробуйте открыть базу, каким-нибудь sqlite менеджером (например, http://sqliteman.com/) и убедитесь что она не бита и не зашифрована.

String dbURL = "jdbc:sqlite:/users/andrei_tsiarenia/Downloads/mobile2.sqlite";
Я не знаю, как правильно работать с sqlite в Java, но разве здесь не должен быть полный путь к базе? Что-то вроде jdbc:sqlite:c:/users/andrei_tsiarenia/Downloads/mobile2.sqlite

Зависит от оси.
В винде нужно указывать диск.
В линуксах и андроиде полный путь начинается со слэша (/opt/ftpsite/...).

Так что в этом плане топикстартер указал корректно.
Плюс иначе ошибка жавы была бы FileNotFoundException (не могу найти файл). А жава нашла файл, но не смогла прочитать (шифровка или не БД)
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#6 defonus

defonus

    Новый участник

  • Members
  • Pip
  • 32 сообщений

Отправлено 31 октября 2013 - 15:07

Менеджерами, плагином для ФФ открывается - без проблем ... без паролей и т.д. SQL запросы выполняются ... а вот из явы - ошибка.

з.ы. либа ля работы с sql-lite - есть
<dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.7.2</version>
        </dependency>

  • 0

#7 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 31 октября 2013 - 16:33

Зависит от оси.
В винде нужно указывать диск.
В линуксах и андроиде полный путь начинается со слэша (/opt/ftpsite/...).

Ну, это я понимаю. Просто указанный путь уж очень напоминает виндовый путь к %userprofile%, только без диска. В линуксе, я бы ждал увидеть что-то вроде /home/blablabla
defonus, вы на винде или на никсах все это проделываете?
  • 0

#8 defonus

defonus

    Новый участник

  • Members
  • Pip
  • 32 сообщений

Отправлено 31 октября 2013 - 16:46


Зависит от оси.
В винде нужно указывать диск.
В линуксах и андроиде полный путь начинается со слэша (/opt/ftpsite/...).

Ну, это я понимаю. Просто указанный путь уж очень напоминает виндовый путь к %userprofile%, только без диска. В линуксе, я бы ждал увидеть что-то вроде /home/blablabla
defonus, вы на винде или на никсах все это проделываете?


Mac OS
  • 0

#9 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 31 октября 2013 - 16:59

Mac OS

Тогда можете проигнорировать мой предыдущий комментарий :)

Кстати, это не ваш случай http://stackoverflow...12813850/735893 ?
  • 0

#10 defonus

defonus

    Новый участник

  • Members
  • Pip
  • 32 сообщений

Отправлено 01 ноября 2013 - 07:57


Mac OS

Тогда можете проигнорировать мой предыдущий комментарий :)

Кстати, это не ваш случай http://stackoverflow...12813850/735893 ?


хм на компе установлено SQLite version 3.7.12 - в коде джарка 3.7.2 - а есть разница в этих версиях,? (я видел, что в "стэке" это разрезорвило проблему - я просто не знаю ка кобновить версию sqlite на маке - погуглю и попробую )
спасибо
  • 0

#11 defonus

defonus

    Новый участник

  • Members
  • Pip
  • 32 сообщений

Отправлено 01 ноября 2013 - 13:50

Все решилось заменой драйвера - это ошибка в 3.7.2 заюзал 3.7.15 с https://bitbucket.or...-jdbc/downloads
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных