Урок 34. Хранение данных. SQLite
Re: Урок 34. Хранение данных. SQLite
вам выше ссылку дали, как делать, а вы отказались.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
Всем спасибо огромное. Получилось сделать по ссылке вверху.
Re: Урок 34. Хранение данных. SQLite
Добрый день!
Подскажите, пожалуйста, а как обрабатываются данные, если используется одна БД с несколькими таблицами?
То есть на эмуляторе можно работать с разными таблицами, а на реальном устройстве данные из таблиц не читаются (если одна таблица, то всё Ok).
Как то надо особенно подключать таблицы, так же как и БД?
Заранее спасибо.
Подскажите, пожалуйста, а как обрабатываются данные, если используется одна БД с несколькими таблицами?
То есть на эмуляторе можно работать с разными таблицами, а на реальном устройстве данные из таблиц не читаются (если одна таблица, то всё Ok).
Как то надо особенно подключать таблицы, так же как и БД?
Заранее спасибо.
Re: Урок 34. Хранение данных. SQLite
нет, ничего особенного делать не нужно. Только в запросах указывать имя таблицы.
Что у тебя там происходит - не ясно.
Что у тебя там происходит - не ясно.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
Все мучаюсь с БД с несколькими таблицами и не получается как-то решить этот вопрос.
У меня есть класс DbHelper:
Если я работаю с БД с одной таблицей, то все ok. Но если я работаю с БД, в которой несколько таблиц, то ничего не получается.
Мне кажется, что проблема в методе onCreate(SQLiteDatabase db), так как в нем создается таблица "create table mytable..."
а у меня таблицы: mytable, mytable_1, mytable_2.
Тут как-то надо подменять значение mytable на значения mytable_1 или mytable_2.
Или я вообще не в том месте ищу ошибку?
Заранее спасибо за отклики!
У меня есть класс DbHelper:
Код: Выделить всё
package com.example.oncreate_001_1_word;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
class DbHelper extends SQLiteOpenHelper {
final String LOG_TAG = "myLogs";
SQLiteDatabase db;
DbHelper dbHelper;
private final Context myContext;
private static final String DATABASE_NAME = "DBWords";
public final static String DATABASE_PATH = "/data/data/com.example.oncreate_001_1_word/databases/";
public static final int DATABASE_VERSION = 1;
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
this.myContext = context;
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.d(LOG_TAG, "===Создаем новую ДБ===");
db.execSQL("create table mytable ("
+ "_id integer primary key autoincrement,"
+ "engWord text," + "rusWord text, " + "indLearn text"
+ ");");
}
@Override
public void onUpgrade (SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
// Create a empty database on the system
public void createDatabase() throws IOException {
boolean dbExist = checkDataBase();
if (dbExist) {
Log.v("DB Exists", "db exists");
// By calling this method here onUpgrade will be called on a
// writeable database, but only if the version number has been
// bumped
// onUpgrade(myDataBase, DATABASE_VERSION_old,
// DATABASE_VERSION);
}
boolean dbExist1 = checkDataBase();
if (!dbExist1) {
this.getReadableDatabase();
try {
this.close();
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
// Check database already exist or not
private boolean checkDataBase() {
boolean checkDB = false;
try {
String myPath = DATABASE_PATH + DATABASE_NAME;
File dbfile = new File(myPath);
checkDB = dbfile.exists();
} catch (SQLiteException e) {
}
return checkDB;
}
// Copies your database from your local assets-folder to the just
// created empty database in the system folder
private void copyDataBase() throws IOException {
String outFileName = DATABASE_PATH + DATABASE_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
InputStream myInput = myContext.getAssets().open(DATABASE_NAME);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
// delete database
// public void db_delete()
// {
// File file = new File(DATABASE_PATH + DATABASE_NAME);
// if(file.exists())
// {
// file.delete();
// System.out.println("delete database file.");
// }
// }
// Open database
public void openDatabase() throws SQLException {
String myPath = DATABASE_PATH + DATABASE_NAME;
db = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READWRITE);
}
public synchronized void closeDataBase() throws SQLException {
if (db != null)
db.close();
super.close();
}
}
Мне кажется, что проблема в методе onCreate(SQLiteDatabase db), так как в нем создается таблица "create table mytable..."
а у меня таблицы: mytable, mytable_1, mytable_2.
Тут как-то надо подменять значение mytable на значения mytable_1 или mytable_2.
Или я вообще не в том месте ищу ошибку?
Заранее спасибо за отклики!
Re: Урок 34. Хранение данных. SQLite
Как вы думаете, что делает команда ?-Alex- писал(а):Все мучаюсь с БД с несколькими таблицами и не получается как-то решить этот вопрос.
а у меня таблицы: mytable, mytable_1, mytable_2.
Тут как-то надо подменять значение mytable на значения mytable_1 или mytable_2.
Или я вообще не в том месте ищу ошибку?
Заранее спасибо за отклики!
[syntax=sql]create table mytable[/syntax]
Вы умеете копировать код?а у меня таблицы: mytable, mytable_1, mytable_2.
(и прочитайте мою подпись, как выкладывать код в правильных тегах)
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: Урок 34. Хранение данных. SQLite
Alex, разберитесь с каждой строчкой своего кода, нельзя так слепо копировать код, не понимая, что он делает.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
Спасибо огромное за помощь.
Re: Урок 34. Хранение данных. SQLite
Мне тут вот что интересно, если моя база будет состоять из нескольких тысяч строк, то можно ее забивать допустим как в Акцесе, напрямую с таблицей работать, а не программно и не через эмулятор?
Re: Урок 34. Хранение данных. SQLite
зачем в аксесе? Есть разные менеджеры sqlite специально для этого
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
Просто я раньше работал только с аксесом, по этому и привел пример на нем. Подскажите тогда пожалуйста мне наилучший менеджер и нужную документацию по нему. За ранее спасибо!
Re: Урок 34. Хранение данных. SQLite
я не знаю наилучшего, устала наверное.. попробовала 2 или три, оставила себе sqliteStudio и еще более легкий, без установки, с минимальными функциями SQLite Database Browser
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
Еще никто не жаловался - http://www.navicat.com/ (SQLite - http://www.navicat.com/products/navicat-for-sqlite)Joker1989 писал(а):Просто я раньше работал только с аксесом, по этому и привел пример на нем. Подскажите тогда пожалуйста мне наилучший менеджер и нужную документацию по нему. За ранее спасибо!
Re: Урок 34. Хранение данных. SQLite
А все здесь пользуются эклипсом или может еще какими либо редакторами? Я вот почему интересуюсь, когда я писал на делфи, то во время написания кода он выдавал различные подсказки по коду и это очень удобно по скольку код бывает очень большим, а эклипс такое делает крайне редко. Я по пробовал андроид студио, у него с этим все в порядке, но ни одно приложение я не смог запустить из-за какой-то ошибки, что то типо "не может пройти синхронизацию с Gradle". Помогите чем можите...
Re: Урок 34. Хранение данных. SQLite
И вот еще вопрос, который меня чесно говоря уже бесит! Почему когда я с книги в ручную переписываю код, то он запускается, но не выполняется, а когда этот же самый код тупо копирую - все нормально? А переписываю я его в точности, до последнего символа.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 34. Хранение данных. SQLite
Лично я использую еще и AndroidStudio, но новичкам советую Eclipse, потому как к нему на любой вопрос можно найти ответ.А все здесь пользуются эклипсом или может еще какими либо редакторами?
Вот именно по этой причине советую пока работать с Eclipse =)я не смог запустить из-за какой-то ошибки, что то типо "не может пройти синхронизацию с Gradle". Помогите чем можите...
5 баллов!И вот еще вопрос, который меня чесно говоря уже бесит! Почему когда я с книги в ручную переписываю код, то он запускается, но не выполняется, а когда этот же самый код тупо копирую - все нормально? А переписываю я его в точности, до последнего символа.
Re: Урок 34. Хранение данных. SQLite
а как подключить уже имеющуюся табдицу (myTab.s3db) к приложению, и где она должна лежать что бы корректно работала?
Re: Урок 34. Хранение данных. SQLite
таблица хранится в базе данных и существование ее отдельно не возможно, потому подключить вы можете только базу, предварительно создав там нужную таблицу. Ее нужно просто скопировать в папку /data/data/yout_app_name/databases/. О том, как это сделать уже не раз писали на этом форуме.Joker1989 писал(а):а как подключить уже имеющуюся табдицу (myTab.s3db) к приложению, и где она должна лежать что бы корректно работала?
Re: Урок 34. Хранение данных. SQLite
Никогда не мог понять - почему так часто советуют eclipse, вообще как можно это советовать ? Понятно, что gradle способен создать проблемы новичку, но зачем этому новичку вообще трогать продукт у которого еще релиза не было, то, что он не падает - не значит ничего - это beta и представляет из себя во многом костыль.m090050 писал(а): Вот именно по этой причине советую пока работать с Eclipse =)
Чем IDEA не угодила? бесплатной версии для андрюхи более, чем достаточно, работает она без "затмений" да и собирает без gradle не хуже, чем с ним.
Re: Урок 34. Хранение данных. SQLite
А можно ссылку где ее скачать и нужную документацию по ней если токовая есть?