probleme creation base de donnée
Bonjour,
J'ai créer une base de données que j'ai mis dans le repertoire Asset de l'application.
Lors du premier lancement de l'application, cela devrait copier la base de donnée dans /data/data/NOM_PACKAGE/databases/
ma base de données s'appelle produits.db
MAIS cela ne copie pas je pense car il m'indique cette erreur:
Citation:
08-13 22:02:09.923: ERROR/Database(29474): sqlite3_open_v2("/data/data/com.monapplication/databases/produits.db", &handle, 1, NULL) failed
voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
public class DBAdapter {
DatabaseHelper DBHelper;
Context context;
SQLiteDatabase db;
private static String DB_PATH = "/data/data/com.monapplication/databases/";
private static String DB_NAME = "produits.db";
private String myPath = DB_PATH + DB_NAME;
private final String MY_DATABASE_TABLE = "matable";
public String columnName;
public DBAdapter(Context context) {
this.context = context;
DBHelper = new DatabaseHelper(context);
}
public class DatabaseHelper extends SQLiteOpenHelper {
Context context;
public DatabaseHelper(Context context) {
/** nom de la base et n° de la version */
super(context, DB_NAME, null, 2);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public DBAdapter open() {
boolean dbExist = checkDataBase();
if (dbExist) {
} else {
db = DBHelper.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// db = DBHelper.getWritableDatabase();
}
return this;
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
// database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
public void close() {
db.close();
}
private void copyDataBase() throws IOException {
// Open your local db as the input stream
InputStream myInput = context.getAssets().open(DB_NAME);
// Path to the just created empty db
String outFileName = DB_PATH + DB_NAME;
// Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
// transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
// Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
} |
code de mon activity:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBAdapter db = new DBAdapter(this);
db.open();
} |
Merci.