2011-03-23 4 views
1

Я разрабатываю приложение для устройств Blackberry. Это приложение содержит базу данных. Поскольку API предоставляется в последней версии API, я решил использовать SQLite.Blackberry - Как создать базу данных SQLite?

Я следил за каждым образцом, который мог найти везде, но что бы ни случилось, моя база данных остается пустой, и я получаю «DatabaseIOException: ошибка файловой системы (12)».

Я должен добавить, что я сейчас работаю над симулятором.

Вот код, связанные:

// 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(); 
    } 
} 

Спасибо за вашу помощь, я действительно не там, где эта проблема исходит от.

+0

Пошаговое решение можно найти здесь http://developer.blackberry.com/bbos/java/documentation/sqlite_creating_1981756_11.html –

ответ

1

Только идея - не каждое устройство поддерживает создание БД в памяти устройства (Locations of SQLite database files), поэтому попробуйте вместо этого использовать SDCard (также убедитесь, что у симулятора есть SDCard).

+1

Требование eMMC обычно приводит к исключению «файловой системы не готово», ошибка 12 ' –

1

Я предполагаю, что вы используете подходящее устройство или имитатор устройств для хранения базы данных на встроенном хранилище. Это будет 9800 или 9550. Одной из причин получения «ошибки 12» является то, что база данных уже открыта. Как вы защищаете инициализацию базы данных от выполнения несколько раз?

Смежные вопросы