Урок 34. Хранение данных. SQLite

Обсуждение уроков
Roman
Сообщения: 22
Зарегистрирован: 23 авг 2012, 08:43

Re: Урок 34. Хранение данных. SQLite

Сообщение Roman » 17 дек 2012, 11:14

rezak90 писал(а):на хабре про кирилцу есть, сейчас ссылку отрою:
http://habrahabr.ru/post/57915/
http://habrahabr.ru/qa/8740/
http://habrahabr.ru/post/150543/
http://habrahabr.ru/post/122408/
Спасибо! Буду изучать!

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 20 дек 2012, 00:19

Люди, хелп!!!!
Обновила сдк сегодня, блин, черт дернул
Теперь там все поменялось, особенно эмулятор теперь создается как-то не так (например, в моей версии не получилось создать свой, нужно было обязательно выбрать из дебильного списка разных устройств, иначе кнопка ОКЕй заблокирована). Но это ладно, с базой данных нет соединения, во дела!
Что могло поменяться - понятия не имею. Проверила, с сервером ничего не изменилось, порты, протокол, то се. Отключала файрвол виндовый - ни-фи-га!
ОШибка такая
java.net.ConnectException: failed to connect to connect failed: ECONNREFUSED (Connection refused) at net.sourceforge.jtds.jdbc.ConnectionJDBC2
Публикую кусок, т.к. сейчас нету доступа до ошибок - пытаюсь новый эмулятор создать с нуля и запустить - не могу, долго висит, то закрывается внезапно.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 20 дек 2012, 00:27

вот полный текст ошибки. Ну полностью возвращение к дню номер 1
12-19 21:22:36.029: W/System.err(752): java.sql.SQLException: Network error IOException: failed to connect to localhost/127.0.0.1 (port 1433): connect failed: ECONNREFUSED (Connection refused)
12-19 21:22:36.049: W/System.err(752): at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:417)
12-19 21:22:36.049: W/System.err(752): at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:188)
12-19 21:22:36.074: W/System.err(752): at java.sql.DriverManager.getConnection(DriverManager.java:175)
12-19 21:22:36.074: W/System.err(752): at java.sql.DriverManager.getConnection(DriverManager.java:209)
12-19 21:22:36.074: W/System.err(752): at ru...............run(ThGetNom.java:46)
12-19 21:22:36.074: W/System.err(752): Caused by: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 1433): connect failed: ECONNREFUSED (Connection refused)
Текст соединения прежний

Код: Выделить всё

conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/baza", "user",
						"password");
п-ц, я в шоке.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 34. Хранение данных. SQLite

Сообщение rezak90 » 20 дек 2012, 02:06

снести сдк и поставить то которое было
З.Ы. может уровень апи проекта поменялся?
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 20 дек 2012, 06:52

а как я поставлю, ведь по инструкции (на этом же сайте) было - поставить, а потом обновить, вот оно у меня было обновлено из интернета, а сам каталог я не сохранила - т.к. он огромный был. Сейчас буду где-нибудь искать, всю ночь во сне думала что делать :) Катастрофа!
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 20 дек 2012, 06:55

Посмотрите, плиз, где у вас на эмуляторе находится файл hosts. У меня он вроде был в system\etc Но сейчас я его вообще не вижу.

Я же подменяю перед работой этот файл на свой в эмуляторе, так вот сейчас он туда не пишется, после команды
adb push c:\hosts /system/etc
ошибка "out of memory"

добавила памяти до 512 сделала partition, вроде заработало..

И это в старом эмуляторе, что в новых там творится - не понимаю, зачем они сделали все это.. там у меня не получилось создать эмулятор с тем разрешением экрана, что я хочу, там вообще можно выбрать только из ограниченного списка. Вот.
Изображение

Что они там, белены объелись?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 34. Хранение данных. SQLite

Сообщение rezak90 » 20 дек 2012, 09:01

И это в старом эмуляторе, что в новых там творится - не понимаю, зачем они сделали все это.. там у меня не получилось создать эмулятор с тем разрешением экрана, что я хочу, там вообще можно выбрать только из ограниченного списка. Вот.
по этому поводу скажу что так оно и есть, просто 4.1 андроид не станет на старые телефоны с маленьким разрешением, а новые смартфоны все с большими экранами вот по этому такая бяка получается и с эмулятором =)
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 20 дек 2012, 13:42

Короче настроила я все-таки эмулятор, но вот уже сколько времени пытаюсь, так и не могу его запустить (версию 4.0) - грузится и грузится - пока переливается надпись андроид, дальше так и висит, что делает не понятно. Так за это время я не увидела ни одной загруженной ос.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

MadBah
Сообщения: 2
Зарегистрирован: 20 дек 2012, 20:27

Re: Урок 34. Хранение данных. SQLite

Сообщение MadBah » 21 дек 2012, 23:17

Здравствуйте. У меня почему то не создается БД. Папка data пуста. Может быть что БД не создастся или не работает если Build Target проекта не совпадает с тем что указано на уроке?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 34. Хранение данных. SQLite

Сообщение damager82 » 24 дек 2012, 14:40

MadBah писал(а):Здравствуйте. У меня почему то не создается БД. Папка data пуста. Может быть что БД не создастся или не работает если Build Target проекта не совпадает с тем что указано на уроке?
Да не должно бы ... А если Build Target совпадает, то создается чтоль?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

KillAndEat
Сообщения: 5
Зарегистрирован: 25 ноя 2012, 22:38

Re: Урок 34. Хранение данных. SQLite

Сообщение KillAndEat » 28 дек 2012, 11:37

Микро вопрос: По чему при обнулении бд ID сохраняется?

MadBah
Сообщения: 2
Зарегистрирован: 20 дек 2012, 20:27

Re: Урок 34. Хранение данных. SQLite

Сообщение MadBah » 04 янв 2013, 21:35

Здравствуйте. При совпадении Build Target БД все равно не создается. Я последовал примеру Overdos но все без успеха.
В Error Log выдает ошибку: Failed to load properties file for project 'P0341_SimpleSQLite'.
В LogCat появляется: Изображение.
Помогите пожалуйста разобраться в проблеме... Спасибо

KillAndEat
Сообщения: 5
Зарегистрирован: 25 ноя 2012, 22:38

Re: Урок 34. Хранение данных. SQLite

Сообщение KillAndEat » 09 янв 2013, 09:31

KillAndEat писал(а):Микро вопрос: По чему при обнулении бд ID сохраняется?
Все еще актуально

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 34. Хранение данных. SQLite

Сообщение rezak90 » 09 янв 2013, 11:12

KillAndEat писал(а):
KillAndEat писал(а):Микро вопрос: По чему при обнулении бд ID сохраняется?
Все еще актуально
если id как автоинкремент то его тоже стоит обнулять
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 09 янв 2013, 15:02

а что такое "обнуление БД"?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

lancer
Сообщения: 12
Зарегистрирован: 21 ноя 2012, 23:12

Re: Урок 34. Хранение данных. SQLite

Сообщение lancer » 09 янв 2013, 22:50

Добрый. В этой ветке было обсуждение о том, как использовать БД без доступа к папке data/data . Нашел статью
Получить путь к SD карты памяти

public static final String DATABASE_FILE_PATH = "/sdcard";
или

Environment.getExternalStorageDirectory()
Далее создаем через корневой путь, доступ к базе данных

public class DatabaseHelper
{
private static final String TAG = "DatabaseHelper";

public static final String DATABASE_FILE_PATH = Environment.getExternalStorageDirectory();
public static final String DATABASE_NAME = "mydb";
public static final String TRACKS_TABLE = "tracks";
public static final String TRACK_INFO_TABLE = "track_info";

private static final String TRACKS_TABLE_CREATE = "create table "
+ TRACKS_TABLE
+ " (_id integer primary key autoincrement, title text not null, description text null, created_at date not null);";

private static final String TRACK_INFO_TABLE_CREATE = "create table "
+ TRACK_INFO_TABLE
+ " (_id integer primary key autoincrement, track_id integer not null, latitude real not null, longitude real not null, altitude real not null, created_at date not null);";

private SQLiteDatabase database;

public DatabaseHelper()
{
try
{
database = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH
+ File.separator + DATABASE_NAME, null,SQLiteDatabase.OPEN_READWRITE);
}
catch (SQLiteException ex)
{
Log.e(TAG, "error -- " + ex.getMessage(), ex);
// error means tables does not exits
createTables();
}
finally
{
DBUtil.safeCloseDataBase(database);
}
}

private void createTables()
{
database.execSQL(TRACKS_TABLE_CREATE);
database.execSQL(TRACK_INFO_TABLE_CREATE);
}

public void close()
{
DBUtil.safeCloseDataBase(database);
}

public SQLiteDatabase getReadableDatabase()
{
database = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH
+ File.separator + DATABASE_NAME, null,
SQLiteDatabase.OPEN_READONLY);
return database;
}

public SQLiteDatabase getWritableDatabase()
{
database = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH
+ File.separator + DATABASE_NAME, null,
SQLiteDatabase.OPEN_READWRITE);
return database;
}
Добавляем строку в файле manifest

android.permission.WRITE_EXTERNAL_STORAGE
Ссылка на статью http://stackoverflow.com/questions/7229 ... lper-creat… se-on-sd-card

Все работает кроме одного (и самого главного)
android.database.sqlite.SQLiteException: attempt to write a readonly database
Подскажите пожалуйста, в чем дело?

Заранее спасибо.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 34. Хранение данных. SQLite

Сообщение rezak90 » 09 янв 2013, 23:20

lancer какая версия андроида?
R.id.team
Политика на форуме запрещена

lancer
Сообщения: 12
Зарегистрирован: 21 ноя 2012, 23:12

Re: Урок 34. Хранение данных. SQLite

Сообщение lancer » 09 янв 2013, 23:27

rezak90 писал(а):lancer какая версия андроида?
Тестирую на 2.3.6 написано для 2.3.3

lancer
Сообщения: 12
Зарегистрирован: 21 ноя 2012, 23:12

Re: Урок 34. Хранение данных. SQLite

Сообщение lancer » 09 янв 2013, 23:29

@SuppressLint("SdCardPath")
public class DB {



private final Context mCtx;
String DATABASE_FILE_PATH = "/sdcard";

private DBHelper mDBHelper;
private SQLiteDatabase mDB;

public DB(Context ctx) {
mCtx = ctx;
}

// открыть подключение
public void open() {
mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
mDB = mDBHelper.getWritableDatabase();

mDB = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH
+ File.separator + DB_NAME, null,SQLiteDatabase.OPEN_READWRITE);
}

//public SQLiteDatabase getWritableDatabase()
//{
// mDB = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH
//+ File.separator + DB_NAME, null,SQLiteDatabase.OPEN_READWRITE);
//return mDB;
//}

// закрыть подключение
public void close() {
if (mDBHelper!=null) mDBHelper.close();
}



// класс по созданию и управлению БД
private class DBHelper extends SQLiteOpenHelper {

public DBHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);


}




@Override
public void onCreate(SQLiteDatabase db){
//db.execSQL(DB_CREATE_PS);
//db.execSQL(DB_CREATE_S);
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}
}

}

Удалил из своего кода все лишнее. Может у меня косяк какой-то.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 34. Хранение данных. SQLite

Сообщение rezak90 » 09 янв 2013, 23:35

в ссылке что предоставили говорится:
Works perfectly for me. Used getExternalStoragePublicDirectory for Android version > 2.2
R.id.team
Политика на форуме запрещена

Ответить