J'ai créé une base de données à l'aide du navigateur de base de données SQLite. Je dois suivre ce example. Erreur lors de la récupération des données de la base de données SQLite
Nom de la base de données est: jokesdatabase.sql, qui a une table blagues i place ce dossier dans les actifs comme ceci: dossier actif
Maintenant, mon code est:
DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
private Context mycontext;
private String DB_PATH = "/data/data/a.b.c/databases/";
private static String DB_NAME = "jokesdatabase.sql"; //I have aslo tru .db extenstion
private static String DB_TABLE = "jokes";
public SQLiteDatabase myDataBase;
public DatabaseHelper(Context context) throws IOException {
super(context, DB_NAME, null, 1);
this.mycontext = context;
boolean dbexist = checkdatabase();
if (dbexist) {
// System.out.println("Database exists");
opendatabase();
} else {
// System.out.println("Database doesn't exist");
createdatabase();
}
}
public void createdatabase() throws IOException {
boolean dbexist = checkdatabase();
if (dbexist) {
System.out.println(" Database exists.");
} else {
this.getReadableDatabase();
try {
copydatabase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkdatabase() {
// SQLiteDatabase checkdb = null;
boolean checkdb = false;
try {
String myPath = DB_PATH + DB_NAME;
File dbfile = new File(myPath);
checkdb = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READWRITE) != null;
checkdb = dbfile.exists();
} catch (SQLiteException e) {
System.out.println("Database doesn't exist");
}
return checkdb;
}
private void copydatabase() throws IOException {
// Open your local db as the input stream
InputStream myinput = mycontext.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 byte to inputfile to 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();
}
public void opendatabase() throws SQLException {
// Open the database
String mypath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(mypath, null,
SQLiteDatabase.OPEN_READONLY);
}
public synchronized void close() {
if (myDataBase != null) {
myDataBase.close();
}
super.close();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
// This will return a cursor containing database records
public Cursor data() {
Cursor c;
c = myDataBase.query(DB_TABLE, null, null, null, null, null, null);
return c;
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
}
}
Result.java
maintenant AndroidManifest.xml
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".DatabaseHelper"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Result" android:label="@string/app_name"></activity>
</application>
Et enfin je reçois un message d'erreur suivant sur logcat. Donnez-moi, quelle est l'erreur dans mon code. Je veux seulement créer la base de données using le navigateur de sqlite. S'il vous plaît ne donnez pas la solution de codage via. Corrigez ce problème uniquement. qui est link.
Affichez le StackTrace sous forme de texte! –