Вот код, который я использовал для создания базы данных для приложения. Я поместил этот код в метод init(Object context)
.не может получить доступ к базе данных в Android-устройстве
boolean created = Database.exists("MyDB.db");
db = Database.openOrCreate("MyDB.db");
if(db == null){
System.out.println("SQLite is not supported on this platform");
return;
}
if (!created) {
db.execute("create table temp (id INTEGER PRIMARY KEY,name text,num double);");
for (int i = 0; i < users.length; i++) {
db.execute("insert into temp (name,num) values (?,?);", new String[]{users[i], "" + ages[i]});
}
}
В тренажере он отлично работает. Я могу получить данные из базы данных и выполнить операцию CRUD. Но при установке приложения на устройство Android оно не работает. Я даже не знаю, создается ли база данных или нет.
Я попробовал другой пример. Вот код.
try {
boolean isExist = Database.exists("hx.db");
db = Database.openOrCreate("hx.db");
if(db == null) {
System.out.println("SQLite is not supported on this platform");
return;
}
if(!isExist) {
db.execute("create table variable_type(id INTEGER PRIMARY KEY, varType TEXT);");
for(int i = 0; i< variable_type.length; i++) {
db.execute("insert into variable_type(id, varType) values (?, ?);", new String[]{null, variable_type[i]});
}
db.execute("create table uom(id INTEGER PRIMARY KEY, varType TEXT, uom TEXT, uom_system TEXT);");
for(int i = 0; i < uom.length -1; i++) {
db.execute("insert into uom(id, varType, uom, uom_system) values (?, ?, ?, ?);", new String[]{null, uom[0], uom[i+1], "NA"});
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
Ниже метод, используемый для извлечения данных.
public List<String> getUnitTypes() {
List<String> unitTypes = new ArrayList<String>();
try {
if(Database.exists("hx.db"))
db = Database.openOrCreate("hx.db");
Cursor cursor = db.executeQuery("select * from uom;");
while(cursor.next()) {
Row r = cursor.getRow();
unitTypes.add(r.getString(2));
}
} catch (IOException e) {
System.out.println("Exception in reading values;");
}
return unitTypes;
}
Вот моя форма, где я использую getUnitTypes()
метод.
import java.util.List;
import com.codename1.ui.ComboBox;
.....
private ComboBox<String> in_dropdown, out_dropdown ;
private List<String> unitTypes ;
.......
public TemperatureConversion() {
in_dropdown = new ComboBox<String>();
in_dropdown.setCommandList(true);
in_dropdown.addActionListener(unitChangeListener);
out_dropdown = new ComboBox<String>();
out_dropdown.setCommandList(true);
out_dropdown.addActionListener(unitChangeListener);
unitTypes = AppController.getUnitTypes();
for (int i = 0; i < unitTypes.size(); i++) {
out_dropdown.addItem(unitTypes.get(i));
in_dropdown.addItem(unitTypes.get(i));
}
.......
}
Приложение не сбой, только одна форма, в которой я использовал значения из базы данных в раскрывающемся списке. –
Симулятор показывает правильно. Нет никаких исключений. Я вижу базу данных на рабочем столе. Но как я могу подтвердить, что база данных создана на мобильном устройстве? –
Просто используйте существующий метод в этой форме и войдите на экран или используя Log API. Я сомневаюсь, что первоначально опубликованный фрагмент связан с проблемой. –