Blackberry-如何创建SQLite数据库?
我正在为黑莓设备开发一款应用程序。此应用程序包含一个数据库。由于API是在上一个API版本中提供的,所以我决定使用SQLite 我跟踪了我在任何地方都能找到的每个样本,但不管发生什么,我的数据库仍然是空的,我得到了一个“DatabaseIOException:文件系统错误(12)” 我应该补充说,我目前正在工作的模拟器 以下是相关代码:Blackberry-如何创建SQLite数据库?,sqlite,blackberry,creation,Sqlite,Blackberry,Creation,我正在为黑莓设备开发一款应用程序。此应用程序包含一个数据库。由于API是在上一个API版本中提供的,所以我决定使用SQLite 我跟踪了我在任何地方都能找到的每个样本,但不管发生什么,我的数据库仍然是空的,我得到了一个“DatabaseIOException:文件系统错误(12)” 我应该补充说,我目前正在工作的模拟器 以下是相关代码: // Creation of the database private static final String DATABASE_NAME = "myDatab
// Creation of the database
private static final String DATABASE_NAME = "myDatabase.db";
private static final String STORAGE_LOCATION = "/store/databases/myApp/";
try
{
// Create URI
URI uri = URI.create(STORAGE_LOCATION + DATABASE_NAME);
// Open or create a plain text database. This will create the
// directory and file defined by the URI (if they do not already exist).
db = DatabaseFactory.openOrCreate(uri, new DatabaseSecurityOptions(false));
// Close the database in case it is blank and we need to write to the file
db.close();
this.CreateTable();
}
catch ( Exception e )
{
System.out.println( e.getMessage() );
e.printStackTrace();
}
表格创建方法:
public void CreateTable(){
URI uri;
try {
uri = URI.create(STORAGE_LOCATION + DATABASE_NAME);
// Create a new DatabaseOptions object forcing foreign key constraints
DatabaseOptions databaseOptions = new DatabaseOptions();
databaseOptions.set( "foreign_key_constraints", "on" );
// Open the database
db = DatabaseFactory.open(uri, databaseOptions);
} catch (ControlledAccessException e) {
e.printStackTrace();
} catch (DatabaseIOException e) {
e.printStackTrace();
} catch (DatabasePathException e) {
e.printStackTrace();
} catch (IllegalArgumentException e1) {
e1.printStackTrace();
} catch (MalformedURIException e1) {
e1.printStackTrace();
} catch (DatabaseOptionsSetInvalidKeyException e) {
e.printStackTrace();
} catch (DatabaseOptionsSetInvalidValueException e) {
e.printStackTrace();
}
Statement st;
try {
st = this.getDb().createStatement("CREATE TABLE '" + TABLE_NAME1 +
"'('id' PRIMARY KEY, 'libContexte' TEXT, 'libelle' TEXT, 'xcoord' REAL, "+
"'ycoord' REAL)");
st.prepare();
st.execute();
} catch (DatabaseException e) {
e.printStackTrace();
}
try {
db.close();
} catch (DatabaseIOException e) {
e.printStackTrace();
}
}
谢谢你的帮助,我真的不知道问题是从哪里来的。只是一个想法-不是每个设备都支持在设备内存上创建DB(),所以尝试使用SD卡代替(同时确保模拟器有SD卡).我假设您正在使用适当的设备或设备模拟器在内置存储器上存储数据库。那将是9800或9550。获取“错误12”的一个原因是数据库已打开。如何防止数据库初始化多次执行 eMMC要求通常会导致“文件系统未就绪”异常,而不是“错误12”。这里可以找到逐步解决方案