以下是我用于为应用程序创建数据库的代码。我把这段代码放在init(Object context)
方法中。
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));
}
.......
}
答案 0 :(得分:0)
这几乎是来自SQLDemo的代码,它在Android设备上运行良好。我唯一能看出的区别是你使用了init(Object)
方法,而SQLDemo使用了start()
方法。但我不认为这会导致问题。
应用程序以什么方式工作?它无法启动吗?
我建议将代码移到start()
方法中,包装try / catch中可疑的所有内容,并在出现异常时将带错误的标签放入表单中。