I'm trying to implement the SQLiteAssetHelper library to use my external database in the application. I try the example code on github but the application keep crashing. According to logcat, there's error in initializing the MyDatabase class
07-08 13:34:55.459: E/AndroidRuntime(6242): FATAL EXCEPTION: main
07-08 13:34:55.459: E/AndroidRuntime(6242): Process: com.example.externaldatabasequery, PID: 6242
07-08 13:34:55.459: E/AndroidRuntime(6242): java.lang.NoClassDefFoundError: com.example.externaldatabasequery.MyDatabase
07-08 13:34:55.459: E/AndroidRuntime(6242): at com.example.externaldatabasequery.MainActivity.onCreate(MainActivity.java:19)
07-08 13:34:55.459: E/AndroidRuntime(6242): at android.app.Activity.performCreate(Activity.java:5990)
07-08 13:34:55.459: E/AndroidRuntime(6242): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
07-08 13:34:55.459: E/AndroidRuntime(6242): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
07-08 13:34:55.459: E/AndroidRuntime(6242): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
07-08 13:34:55.459: E/AndroidRuntime(6242): at android.app.ActivityThread.access$800(ActivityThread.java:151)
07-08 13:34:55.459: E/AndroidRuntime(6242): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
07-08 13:34:55.459: E/AndroidRuntime(6242): at android.os.Handler.dispatchMessage(Handler.java:102)
07-08 13:34:55.459: E/AndroidRuntime(6242): at android.os.Looper.loop(Looper.java:135)
07-08 13:34:55.459: E/AndroidRuntime(6242): at android.app.ActivityThread.main(ActivityThread.java:5254)
07-08 13:34:55.459: E/AndroidRuntime(6242): at java.lang.reflect.Method.invoke(Native Method)
07-08 13:34:55.459: E/AndroidRuntime(6242): at java.lang.reflect.Method.invoke(Method.java:372)
07-08 13:34:55.459: E/AndroidRuntime(6242): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
07-08 13:34:55.459: E/AndroidRuntime(6242): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Here's the Mydatabase.java class
package com.example.externaldatabasequery;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
public class MyDatabase extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "extenalDB.db";
private static final int DATABASE_VERSION = 1;
public MyDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public Cursor getEmployees() {
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String [] sqlSelect = {"0 _id","E_NAME","E_AGE"};
String sqlTables = "EMP_TABLE";
qb.setTables(sqlTables);
Cursor c = qb.query(db, sqlSelect, null, null,
null, null, null);
c.moveToFirst();
return c;
} }
and MainActivity.java class
package com.example.externaldatabasequery;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
public class MainActivity extends ListActivity {
private Cursor students;
private MyDatabase db;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_example);
db = new MyDatabase(this);
Thread th = new Thread(){
public void run(){
students = db.getEmployees();
}
};
th.start();
ListAdapter adapter = new SimpleCursorAdapter(this,
R.layout.list_example_entry,
students,
new String[] {"name","age"}, //table values
new int[] {R.id.name_entry,R.id.number_entry});
this.setListAdapter(adapter);
}
@Override
protected void onDestroy() {
super.onDestroy();
students.close();
db.close();
} }
Aucun commentaire:
Enregistrer un commentaire