powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / android+Firebird
25 сообщений из 217, страница 4 из 9
android+Firebird
    #38356438
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladА вообще, вопросы по java лучше задавать в http://tech.groups.yahoo.com/group/Firebird-Java/
Уметь бы ещё на инглиш раговаривать более-менее, а то непонятно как и вопрос то задать ;)

hvladРазрешения для работы с инет у приложения есть ?
А вот это бы поподробней, в примере автора Android порта Firebird об этом ни слова.
...
Рейтинг: 0 / 0
android+Firebird
    #38356450
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovНу так пропиши его в файле hosts. На один раз попробовать.
Где это на андроиде найти?
...
Рейтинг: 0 / 0
android+Firebird
    #38356471
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonradshvladRaphael92,

ну так убедись сначала, что тебе с устройства доступен хост

Хост доступен.Ну так это же не тебе сказано было.
KonradsТ.Е. проблема походу в файле свойств драйвераПонятия не имею, что это файл и что там должно быть.

KonradshvladРазрешения для работы с инет у приложения есть ?
А вот это бы поподробнейНу так кто тут под андроид пишет и должен знать особенности этой платформы ?
...
Рейтинг: 0 / 0
android+Firebird
    #38356481
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonradshvladРазрешения для работы с инет у приложения есть ?
А вот это бы поподробней, в примере автора Android порта Firebird об этом ни слова.А ты ридми его вообще читал ?

автор**********
How to use
**********
Copy all files in the package to your project.

Don't forget to grant permissions for INTERNET in your project ;)
...
Рейтинг: 0 / 0
android+Firebird
    #38357679
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladKonradsпропущено...

А вот это бы поподробней, в примере автора Android порта Firebird об этом ни слова.А ты ридми его вообще читал ?

автор**********
How to use
**********
Copy all files in the package to your project.

Don't forget to grant permissions for INTERNET in your project ;)

Читал. Пробовал в манифесте поставить:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:permission="android.permission.INTERNET">    // <-- ВОТ ЗДЕСЬ ПОСТАВИЛ
        <activity
            android:name="com.example.fbtest.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>


непомогает, я всёже грешу на файл свойств драйвера, программа его или просто не находит, или у него формат нарушен
...
Рейтинг: 0 / 0
android+Firebird
    #38357738
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде разобрался.
В манифесте автоматом вставляются строки которые нужно удалить, иначе не работает:

Код: java
1.
2.
3.
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />



и вставить строку:
Код: java
1.
<uses-permission android:name="android.permission.INTERNET"/>



Добавление этой строки без удаления блока uses-sdk не помогает.

Вот так выглядет полностью манифест моей тестовой программы:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.fbtest2"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-permission android:name="android.permission.INTERNET"/>
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.fbtest2.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    
    
</manifest>
...
Рейтинг: 0 / 0
android+Firebird
    #38357929
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И при всём при этом я так и не понял каким образом влияет блок uses-sdk на доступ к интернету.
Кстати после удаления этого блока клипса немного ругается при запуске приложения:
Код: java
1.
2.
[2013-08-07 13:23:03 - FBTest2] WARNING: Application does not specify an API level requirement!
[2013-08-07 13:23:03 - FBTest2] Device API version is 17 (Android 4.2.2)


но это не мешает.

На реальной железке тоже проверил - работает
...
Рейтинг: 0 / 0
android+Firebird
    #38358038
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonradsНа реальной железке тоже проверил - работаетМои поздравления :)
...
Рейтинг: 0 / 0
android+Firebird
    #38359068
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не всё однако гладко :)

В таком виде всё зашибись:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Properties ParamConnection = new Properties();
ParamConnection.setProperty("user", "SYSDBA"); 
ParamConnection.setProperty("password", "masterkey"); 
// ParamConnection.setProperty("encoding", "WIN1251");

String sCon = "jdbc:firebirdsql:192.168.0.97/3050:TestDB";

//register Driver
Class.forName("org.firebirdsql.jdbc.FBDriver");

//Get connection
Connection  con = DriverManager.getConnection(sCon, ParamConnection);


Но если убрать коммент со стоки
Код: java
1.
ParamConnection.setProperty("encoding", "WIN1251")

- будет ошибка выполнения, а в нормальной JAVA всё работает как надо
...
Рейтинг: 0 / 0
android+Firebird
    #38359400
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonradsНо если убрать коммент со стоки
Код: java
1.
ParamConnection.setProperty("encoding", "WIN1251")

- будет ошибка выполненияСекретная, конечно же
...
Рейтинг: 0 / 0
android+Firebird
    #38371521
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladKonradsНо если убрать коммент со стоки
Код: java
1.
ParamConnection.setProperty("encoding", "WIN1251")

- будет ошибка выполненияСекретная, конечно же

Некоторое время отсутствовал и не мог ответить.

Никакая не секретная !

Есть в assets файлик driver_property_info.properties
там вот такие строки есть:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
....
....
roleName	isc_dpb_sql_role_name		# Name of the SQL role
sqlRole		isc_dpb_sql_role_name		# Alias for roleName property

sqlDialect	isc_dpb_sql_dialect		# Dialect of the SQL

encoding	isc_dpb_lc_ctype 		# Client encoding for the database

....
....  more ....



так вот, если закаментить строку "encoding", или вместо "isc_dpb_lc_ctype" поставить любую кодировку, даже несуществующую, то ошибка пропадёт

А ошибка выполнения такая:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
08-20 05:50:41.151: D/<<<<<   MyLog   >>>>>(2502): Сейчас начнётся выполнение << aConnection = DriverManager.getConnection(sCon, ParamConnection); >>
08-20 05:50:41.821: W/dalvikvm(2502): dvmFindClassByName rejecting 'assets/driver_property_info_en_US'
08-20 05:50:41.821: W/dalvikvm(2502): dvmFindClassByName rejecting 'assets/driver_property_info_en'
08-20 05:50:41.841: W/dalvikvm(2502): dvmFindClassByName rejecting 'assets/driver_property_info'
08-20 05:50:42.352: D/dalvikvm(2502): GC_CONCURRENT freed 231K, 11% free 3055K/3428K, paused 94ms+89ms, total 322ms
08-20 05:50:42.352: D/dalvikvm(2502): WAIT_FOR_CONCURRENT_GC blocked 9ms
08-20 05:50:44.141: D/AndroidRuntime(2502): Shutting down VM
08-20 05:50:44.141: W/dalvikvm(2502): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
08-20 05:50:44.372: E/AndroidRuntime(2502): FATAL EXCEPTION: main
08-20 05:50:44.372: E/AndroidRuntime(2502): java.lang.IllegalStateException: Could not execute method of the activity
08-20 05:50:44.372: E/AndroidRuntime(2502): 	at android.view.View$1.onClick(View.java:3599)



Если сделать исправления как я сказал, то получится такой лог:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
08-20 05:53:47.392: D/<<<<<   MyLog   >>>>>(2557): Сейчас начнётся выполнение << aConnection = DriverManager.getConnection(sCon, ParamConnection); >>
08-20 05:53:48.031: W/dalvikvm(2557): dvmFindClassByName rejecting 'assets/driver_property_info_en_US'
08-20 05:53:48.031: W/dalvikvm(2557): dvmFindClassByName rejecting 'assets/driver_property_info_en'
08-20 05:53:48.052: W/dalvikvm(2557): dvmFindClassByName rejecting 'assets/driver_property_info'
08-20 05:53:48.563: D/dalvikvm(2557): GC_CONCURRENT freed 231K, 11% free 3056K/3420K, paused 77ms+116ms, total 324ms
08-20 05:53:49.711: D/<<<<<   MyLog   >>>>>(2557): Statement
08-20 05:53:49.741: D/<<<<<   MyLog   >>>>>(2557): rs
08-20 05:53:49.992: D/dalvikvm(2557): GC_CONCURRENT freed 311K, 13% free 3159K/3616K, paused 75ms+90ms, total 383ms
08-20 05:53:49.992: D/dalvikvm(2557): WAIT_FOR_CONCURRENT_GC blocked 25ms
08-20 05:53:51.646: D/<<<<<   MyLog   >>>>>(2557): rs.last
08-20 05:53:51.646: D/<<<<<   MyLog   >>>>>(2557): rs.getRow
08-20 05:53:51.672: D/<<<<<   MyLog   >>>>>(2557): rs.first
08-20 05:53:51.692: D/<<<<<   MyLog   >>>>>(2557): String[rowsCount]
08-20 05:53:51.702: D/<<<<<   MyLog   >>>>>(2557): Заполняем
08-20 05:53:52.641: D/<<<<<   MyLog   >>>>>(2557): Заполнили !!!
08-20 05:53:52.672: D/dalvikvm(2557): GC_CONCURRENT freed 99K, 7% free 3518K/3760K, paused 96ms+97ms, total 347ms



Но толку от этого ноль !!!, в ListView вместо букв - ромбики. В базе данных всё в кодировке 1251, изменить невозможно, из виндов программы работают сейчас.
...
Рейтинг: 0 / 0
android+Firebird
    #38371838
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonradsВ базе данных всё в кодировке 1251, изменить невозможно, из виндов программы работают сейчас.Если базу перевести в УТФ8, а старые программы оставить с win1251, то не случится ничего страшного, вообще, разве что строки можно будет делать не на 32 тыс символов, а только на 8 тыс, ну может малёху скорость подсядет за счет перекодировок, хотя я особой просадки не заметил. А новые программы делай на юникоде.
...
Рейтинг: 0 / 0
android+Firebird
    #38372673
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_PisarevskyKonradsВ базе данных всё в кодировке 1251, изменить невозможно, из виндов программы работают сейчас.Если базу перевести в УТФ8, а старые программы оставить с win1251, то не случится ничего страшного, вообще, разве что строки можно будет делать не на 32 тыс символов, а только на 8 тыс, ну может малёху скорость подсядет за счет перекодировок, хотя я особой просадки не заметил. А новые программы делай на юникоде.

Ну на новой базе так можно попробовать, а что делать с рабочей? В ней явно указана кодировка 1251 для Charset и Collate символьных полей. Поменять рабочую на новую - неполучится, слишком много баз в разных местах и данных неменряно. Да и некрасиво всё это. Именно для этих целей ведь в драйвере предусмотрен encoding, в драйвере для Java он отлично работает.
...
Рейтинг: 0 / 0
android+Firebird
    #38372701
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока решил проблему так:

В параметрах подключения encoding не используем:
Код: java
1.
2.
3.
4.
5.
6.
7.
		Properties ParamConnection = new Properties();

		sCon = "jdbc:firebirdsql:192.168.0.97/3050:TESTBASE";

		ParamConnection.setProperty("user", "SYSDBA"); 
		ParamConnection.setProperty("password", "masterkey"); 
//		ParamConnection.setProperty("encoding", "WIN1251");   




Подключаемся и читаем текстовые поля с кодировкой 1251 так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
			Log.d(myTag, "Сейчас начнётся выполнение << aConnection = DriverManager.getConnection(sCon, ParamConnection); >>");
				
			aConnection = DriverManager.getConnection(sCon, ParamConnection);

			Log.d(myTag, "Statement");
            
			Statement stmt = aConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

			Log.d(myTag, "rs");

			java.sql.ResultSet rs = stmt.executeQuery("SELECT NAME FROM PERSON");

			Log.d(myTag, "rs.last");
			rs.last();
			
			Log.d(myTag, "rs.getRow");
			int rowsCount = rs.getRow();

			Log.d(myTag, "rs.first");
			rs.first();
         
			Log.d(myTag, "String[rowsCount]");
			String[] names = new String[rowsCount];
	         
			Log.d(myTag, "Заполняем");
			for (int i = 0; i < rowsCount; i++) {
//				names[i] = rs.getString(1);			// Было так, как еслибы работал encoding
				names[i] = new String(rs.getBytes(1), "cp1251");	// Стало так
				rs.next();
			}
	         
			Log.d(myTag, "Заполнили !!!");
			rs.close();
			stmt.close();
            

			// находим список
			ListView lvMain = (ListView) findViewById(R.id.lvMain);

			// создаем адаптер

			ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
					R.layout.my_list_item, names);

			// присваиваем адаптер списку
			lvMain.setAdapter(adapter);



В принципе вроде несложно, тормозов пока не заметил. Но это как в анекдоте: ".... ..... ..... вилочки нашлись, но осадок остался" :)
...
Рейтинг: 0 / 0
android+Firebird
    #38372829
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonradsНу на новой базе так можно попробовать, а что делать с рабочей? В ней явно указана кодировка 1251 для Charset и Collate символьных полей.Я выгружал метаданные в скрипт, автозамена чарсетов, потом вливал данные при помощи ibpump, да муторно, но автоматизируемо.
Если у вас продукт тиражируемый, то база в вин1251 сразу отрезает у вас зарубежных заказчиков.

Баг зарепортил ?
...
Рейтинг: 0 / 0
android+Firebird
    #38372858
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_PisarevskyKonradsНу на новой базе так можно попробовать, а что делать с рабочей? В ней явно указана кодировка 1251 для Charset и Collate символьных полей.Я выгружал метаданные в скрипт, автозамена чарсетов, потом вливал данные при помощи ibpump, да муторно, но автоматизируемо.
Если у вас продукт тиражируемый, то база в вин1251 сразу отрезает у вас зарубежных заказчиков.

Баг зарепортил ?

Да нет у меня зарубежных, здесь бы разобраться, программа,для которой я хочу сделать андроид-клиент не претендует на международность ;)

А насчёт бага сюда пробовал писать, пара коментов моих есть - http://www.firebirdnews.org/?p=8620

И сюда - http://sourceforge.net/projects/androidjaybird/ но здесь как не пиши весь код в одну строку выводится, хотя они вроде авторы, но один мой комент там торчит :)

P.S.
Проверил всё то что написал выше по поводу cp1251 на реальных железках с Android 4.2 и Android 2.3 - всё работает.
...
Рейтинг: 0 / 0
android+Firebird
    #38372881
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
android+Firebird
    #38372892
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот видиш, там и без меня уже такие же вопросы :)

Ну перепощу сейчас туда свои логи
...
Рейтинг: 0 / 0
android+Firebird
    #38372958
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonradsНу вот видиш, там и без меня уже такие же вопросы :)

Ну перепощу сейчас туда свои логиТы первый ответ в том топике прочел? попробовал?
Я с андроидом пока никак, попробовать не на чем, но шеф намекает, что скоро может понадобиться.
...
Рейтинг: 0 / 0
android+Firebird
    #38372976
Konrads
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там же отвечает, точно как и я, при подключении параметра encoding возникает ошибка уже при подключении к базе. Это явный БАГ!!!

В ответ авторы ему предложили показать логи. Он этого не сделал, это сделал сейчас я. Посмотрим что ответят
...
Рейтинг: 0 / 0
android+Firebird
    #38374512
Raphael92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли использовать БД firebird локально, т.е. чтобы она была на самом телефоне, а не на сервере? Или для этого нужно установить службу firebird на android ?
...
Рейтинг: 0 / 0
android+Firebird
    #38374536
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raphael92,

нет пока Firebird для андрида, поэтому никакую "службу" установить не получится.
вместе с тем,

Серия семинаров по RAD Studio для Android:
http://www.softwarepeople.ru/delphiandroid/?utm_source=ibase&utm_medium=banner&utm_campaign=Delphiandroid
...
Рейтинг: 0 / 0
android+Firebird
    #38374553
Raphael92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

т.е. без интернета к БД никак нельзя подключиться?
...
Рейтинг: 0 / 0
android+Firebird
    #38374572
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raphael92т.е. без интернета к БД никак нельзя подключиться?
я не знаю, зачем вы задали этот вопрос.
- с базой Firebird работает только Firebird
- Firebird под андроид нет
- что будет, если положить базу Firebird на андроид?
...
Рейтинг: 0 / 0
android+Firebird
    #38374913
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Jaybird умеет работать с embedded ЕМНИП
...
Рейтинг: 0 / 0
25 сообщений из 217, страница 4 из 9
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / android+Firebird
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]