@Override public void onCreate(SQLiteDatabase db) { try{ db.execSQL("create table " + NotificationManager.getUserStatic(context) + "log ("+ KEY_TIME +" INTEGER primary key, "+ KEY_TEXT +" TEXT not null);"); } catch (SQLException e) { e.printStackTrace(); } } /** * onOpen method called when app is opening. */ @Override public void onOpen(SQLiteDatabase db) { try{ System.out.println("tophere"); db.execSQL("create table if not exists "+DATABASE_NAME+"." + NotificationManager.getUserStatic(context) + "log ("+ KEY_TIME +" INTEGER primary key, "+ KEY_TEXT +" TEXT not null);"); System.out.println("downhere"); } catch (SQLException e){ e.printStackTrace(); } }
We have this code for creating a database for an app. problem is, as far as we can tell, it doesn't create the tables, so when we try to insert into the tables and read from them, it crashes. we have tried everything, the System.out.println's are there to see where it fails. we get the tophere out, but it never gets to the downhere part in the log, so we are guessing something is causing it to fail there. we have checked with DDMS that the database is in the correct folder, so the database should be there, but for some reason it cant find it(line 2 and 3 in the log).
Any thoughts?
this is the error log:
04-27 10:45:46.768: I/System.out(6441): tophere 04-27 10:45:46.772: I/SqliteDatabaseCpp(6441): sqlite returned: error code = 1, msg = unknown database NOPO, db=/data/data/dmri.nopo/databases/NOPO 04-27 10:45:46.772: W/System.err(6441): android.database.sqlite.SQLiteException: unknown database NOPO: , while compiling: create table if not exists NOPO.log (time INTEGER primary key, text TEXT not null); 04-27 10:45:46.792: W/System.err(6441): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 04-27 10:45:46.792: W/System.err(6441): at android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:68) 04-27 10:45:46.811: W/System.err(6441): at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:134) 04-27 10:45:46.811: W/System.err(6441): at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361) 04-27 10:45:46.811: W/System.err(6441): at android.database.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:260) 04-27 10:45:46.811: W/System.err(6441): at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:84) 04-27 10:45:46.811: W/System.err(6441): at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1899) 04-27 10:45:46.823: W/System.err(6441): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1839) 04-27 10:45:46.823: W/System.err(6441): at dmri.nopo.DBAdapter$DatabaseHelper.onOpen(DBAdapter.java:67) 04-27 10:45:46.823: W/System.err(6441): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:180) 04-27 10:45:46.902: W/System.err(6441): at dmri.nopo.DBAdapter.open(DBAdapter.java:86) 04-27 10:45:46.912: W/System.err(6441): at dmri.nopo.LogManager.readLogFile(LogManager.java:32) 04-27 10:45:46.912: W/System.err(6441): at dmri.nopo.LogActivity.onCreate(LogActivity.java:25) 04-27 10:45:46.921: W/System.err(6441): at android.app.Activity.performCreate(Activity.java:4465) 04-27 10:45:46.921: W/System.err(6441): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 04-27 10:45:46.931: W/System.err(6441): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 04-27 10:45:46.931: W/System.err(6441): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 04-27 10:45:46.941: W/System.err(6441): at android.app.ActivityThread.access$600(ActivityThread.java:123) 04-27 10:45:46.941: W/System.err(6441): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 04-27 10:45:46.953: W/System.err(6441): at android.os.Handler.dispatchMessage(Handler.java:99) 04-27 10:45:46.953: W/System.err(6441): at android.os.Looper.loop(Looper.java:137) 04-27 10:45:46.972: W/System.err(6441): at android.app.ActivityThread.main(ActivityThread.java:4424) 04-27 10:45:46.972: W/System.err(6441): at java.lang.reflect.Method.invokeNative(Native Method) 04-27 10:45:46.972: W/System.err(6441): at java.lang.reflect.Method.invoke(Method.java:511) 04-27 10:45:46.982: W/System.err(6441): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 04-27 10:45:46.982: W/System.err(6441): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 04-27 10:45:46.992: W/System.err(6441): at dalvik.system.NativeStart.main(Native Method) 04-27 10:45:47.002: I/SqliteDatabaseCpp(6441): sqlite returned: error code = 1, msg = no such table: log, db=/data/data/dmri.nopo/databases/NOPO 04-27 10:45:47.012: D/AndroidRuntime(6441): Shutting down VM 04-27 10:45:47.012: W/dalvikvm(6441): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 04-27 10:45:47.181: E/AndroidRuntime(6441): FATAL EXCEPTION: main 04-27 10:45:47.181: E/AndroidRuntime(6441): java.lang.RuntimeException: Unable to start activity ComponentInfo{dmri.nopo/dmri.nopo.LogActivity}: android.database.sqlite.SQLiteException: no such table: log: , while compiling: SELECT time, text FROM log 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.access$600(ActivityThread.java:123) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.os.Handler.dispatchMessage(Handler.java:99) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.os.Looper.loop(Looper.java:137) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.main(ActivityThread.java:4424) 04-27 10:45:47.181: E/AndroidRuntime(6441): at java.lang.reflect.Method.invokeNative(Native Method) 04-27 10:45:47.181: E/AndroidRuntime(6441): at java.lang.reflect.Method.invoke(Method.java:511) 04-27 10:45:47.181: E/AndroidRuntime(6441): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 04-27 10:45:47.181: E/AndroidRuntime(6441): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 04-27 10:45:47.181: E/AndroidRuntime(6441): at dalvik.system.NativeStart.main(Native Method) 04-27 10:45:47.181: E/AndroidRuntime(6441): Caused by: android.database.sqlite.SQLiteException: no such table: log: , while compiling: SELECT time, text FROM log 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:68) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:127) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:94) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:53) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1449) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1405) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1485) 04-27 10:45:47.181: E/AndroidRuntime(6441): at dmri.nopo.DBAdapter.getAllSMS(DBAdapter.java:116) 04-27 10:45:47.181: E/AndroidRuntime(6441): at dmri.nopo.LogManager.readLogFile(LogManager.java:34) 04-27 10:45:47.181: E/AndroidRuntime(6441): at dmri.nopo.LogActivity.onCreate(LogActivity.java:25) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.Activity.performCreate(Activity.java:4465) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 04-27 10:45:47.181: E/AndroidRuntime(6441): ... 11 more
this will help you i have tried it and its also working
this is just an example
public class DatabaseMarks {
public static final String KEY_STUID = "stuid";
public static final String KEY_SUB1 = "subject_one";
public static final String KEY_SUB2 = "subject_two";
public static final String KEY_SUB3= "subject_three";
public static final String KEY_MARKS1= "marks_one";
public static final String KEY_MARKS2 = "marks_two";
public static final String KEY_MARKS3 = "marks_three";
private static final String DATABASE_NAME = "Student";
private static final String DATABASE_MARKSTABLE = "StudentMarks";
private static final int DATABASE_VERSION = 1;
private DbHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;
private static class DbHelper extends SQLiteOpenHelper{
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(" CREATE TABLE " + DATABASE_MARKSTABLE + " (" +
KEY_STUID + " TEXT PRIMARY KEY, " +
KEY_SUB1 + " TEXT NOT NULL, " +
KEY_SUB2 + " TEXT NOT NULL, " +
KEY_SUB3 + " TEXT NOT NULL, " +
KEY_MARKS1 + " INTEGER NOT NULL, " +
KEY_MARKS2 + " INTEGER NOT NULL, " +
KEY_MARKS3 + " INTEGER NOT NULL);"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_MARKSTABLE);
onCreate(db);
}
}
public DatabaseMarks(Context c){
ourContext = c;
}
public DatabaseMarks open()throws SQLException{
ourHelper = new DbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
return this;
}
public void close(){
ourHelper.close();
}
public long createInsert(String stuid, String subject1, String subject2,
String subject3, String marks1, String marks2, String marks3) {
// TODO Auto-generated method stub
ContentValues cv = new ContentValues();
cv.put(KEY_STUID, stuid);
cv.put(KEY_SUB1, subject1);
cv.put(KEY_SUB2, subject2);
cv.put(KEY_SUB3, subject3);
cv.put(KEY_MARKS1, marks1);
cv.put(KEY_MARKS2, marks2);
cv.put(KEY_MARKS3, marks3);
return ourDatabase.insert(DATABASE_MARKSTABLE, null, cv);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With