Страница 13 из 39

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

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

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

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

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

Добавлено: 20 дек 2012, 00:27
Foenix
вот полный текст ошибки. Ну полностью возвращение к дню номер 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");
п-ц, я в шоке.

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

Добавлено: 20 дек 2012, 02:06
rezak90
снести сдк и поставить то которое было
З.Ы. может уровень апи проекта поменялся?

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

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

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

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

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

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

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

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

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

Добавлено: 20 дек 2012, 09:01
rezak90
И это в старом эмуляторе, что в новых там творится - не понимаю, зачем они сделали все это.. там у меня не получилось создать эмулятор с тем разрешением экрана, что я хочу, там вообще можно выбрать только из ограниченного списка. Вот.
по этому поводу скажу что так оно и есть, просто 4.1 андроид не станет на старые телефоны с маленьким разрешением, а новые смартфоны все с большими экранами вот по этому такая бяка получается и с эмулятором =)

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

Добавлено: 20 дек 2012, 13:42
Foenix
Короче настроила я все-таки эмулятор, но вот уже сколько времени пытаюсь, так и не могу его запустить (версию 4.0) - грузится и грузится - пока переливается надпись андроид, дальше так и висит, что делает не понятно. Так за это время я не увидела ни одной загруженной ос.

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

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

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

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

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

Добавлено: 28 дек 2012, 11:37
KillAndEat
Микро вопрос: По чему при обнулении бд ID сохраняется?

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

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

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

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

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

Добавлено: 09 янв 2013, 11:12
rezak90
KillAndEat писал(а):
KillAndEat писал(а):Микро вопрос: По чему при обнулении бд ID сохраняется?
Все еще актуально
если id как автоинкремент то его тоже стоит обнулять

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

Добавлено: 09 янв 2013, 15:02
Foenix
а что такое "обнуление БД"?

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

Добавлено: 09 янв 2013, 22:50
lancer
Добрый. В этой ветке было обсуждение о том, как использовать БД без доступа к папке 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
Подскажите пожалуйста, в чем дело?

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

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

Добавлено: 09 янв 2013, 23:20
rezak90
lancer какая версия андроида?

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

Добавлено: 09 янв 2013, 23:27
lancer
rezak90 писал(а):lancer какая версия андроида?
Тестирую на 2.3.6 написано для 2.3.3

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

Добавлено: 09 янв 2013, 23:29
lancer
@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

}
}

}

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

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

Добавлено: 09 янв 2013, 23:35
rezak90
в ссылке что предоставили говорится:
Works perfectly for me. Used getExternalStoragePublicDirectory for Android version > 2.2