私はAndroidで接続するためにこのコードを書こうとしています。
public class DataBaseAdapter
{
....
....
public DataBaseAdapter(Context context)
{
contextApp = context;
myAlarmDB = new MyAlarmDatabase(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DataBaseAdapter open() throws SQLException
{
try
{
db = myAlarmDB.getWritableDatabase();
}
catch (SQLiteException ex)
{
db = myAlarmDB.getReadableDatabase();
}
return this;
}
}
コードがopen()
メソッドを呼び出すと、Android アプリはエラーで終了します。この特定のコードがコメント化されると、アプリケーションが実行されます。つまり、SQLiteDatabase オブジェクトを自由に作成します。
どうすればいいですか?
これは、接続するクラスのコードですSQLiteOpenHelper
public class MyAlarmDatabase extends SQLiteOpenHelper
{
private static final String CREATE_STATEEMENT=
"create table if not exists AlarmDataBase" +
"(alarm_id integer primary key auto_increment," +
" description text," +
" repeatType integer," +
" repeatDay text," +
" millis text)";
public MyAlarmDatabase(Context context, String name, CursorFactory factory, int version)
{
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db)
{
//db = SQLiteDatabase.openOrCreateDatabase("AlarmManagerDatabase.db", Context.MODE_PRIVATE, null);
db.execSQL(CREATE_STATEEMENT);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
// TODO Auto-generated method stub
Log.w("TaskDBAdapter", "Upgrading from version " + oldVersion + " to " + newVersion + ", which will destroy all old data");
// The simplest case is to drop the old table and create a new one.
db.execSQL("create table alarm_standby as select * from AlarmDataBase");
db.execSQL("DROP TABLE IF EXISTS AlarmDataBase");
db.execSQL("create table AlarmDataBase as select * from alarm_standby");
db.execSQL("drop table alarm_standby");
}
}