В моем приложении для Android у меня был один класс, выполняющий следующие функции:
сохранение данных из источника XML в базу данных;
загрузка данныхиз базы данных;
перезапись в базу данных из источника xml, если данные были старше 24 часов;
, что все работало нормально.
Я сейчас пытаюсь записать новую таблицу в ту же базу данных из другого класса.
Поэтому я следовал тем же процедурам / настройкам, что и в первом классе, и теперь программа падает (ошибка принудительного закрытия) икошка журнала android выдает следующие ошибки:
Ошибка SQL: msg = таблица "имя таблицы" не существует
ошибка вставки (запроса) в таблицу "имя таблицы" (эта ошибка повторяется при каждой попытке вставки)
Проблема в том, что «имя таблицы», которое она мне дает (говорит, что она не существует), является таблицей из первого класса, которая работала нормальнодо.
Вот соответствующий код:
public class CurrencyConverter {
public static String XML_SOURCE = "http://rss.timegenie.com/forex.gz";
public static long LAST_UPDATE=0;
private static SQLiteHelper.DatabaseAdapter dbAdapter;
private final static String TBL_NAME = "tbl_currency";
private final static String KEY_CODE = "code";
private final static String KEY_DESC = "description";
private final static String KEY_RATE = "rate";
private final static void createOrOpenDB(Context context) {
SQLiteHelper dbHelper = new SQLiteHelper();
TableObjectMaker tableObjs = dbHelper.new TableObjectMaker();
tableObjs.addTable(TBL_NAME, new String[] {
"_id integer primary key autoincrement",
KEY_CODE + " text not null",
KEY_DESC + " text not null",
KEY_RATE + " real not null"
});
dbAdapter = dbHelper.new DatabaseAdapter(context);
dbAdapter.open(tableObjs, "local_data", 1);
}
private final static void writeToDB(NodeList nodes) {
if (nodes==null) return;
List<ContentValues> content = SQLiteHelper.getContentValues(nodes,
new String[] {KEY_CODE,KEY_DESC,KEY_RATE});
for (ContentValues c:content) {
dbAdapter.insertRowInTable(TBL_NAME, c);
}
}
private final static void closeDB() {
dbAdapter.close();
}
public static void updateDB(Context context) {
Document xmlDocument = GZip.getResourceAsXML(XML_SOURCE,true);
NodeList nodes = xmlDocument.getElementsByTagName("data");
createOrOpenDB(context);
writeToDB(nodes);
closeDB();
LAST_UPDATE = Calendar.getInstance().getTimeInMillis();
}
...
}
другой класс имеет идентичные методы доступа к базе данных / записи, как описано выше, за исключением своего собственного имени таблицы и имен полей, и он использует то же имя "local_data" для имени базы данных.Как я могу заставить оба класса читать и записывать в свою таблицу в одной базе данных?