Android开发应用数据库的一些注意事项
在应用数据库的时候,我尝试着继承SQLiteOpenHelper 这个类来操作数据库。在初始化 SQLiteOpenHelper 的时候,参数的传入出现问题导致程序一直崩溃。其中 SQLiteOpenHelper 的继承写法如下
`public class MyDatabaseHelper extends SQLiteOpenHelper { private Context mContext; public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) { super(context, name, factory, version, errorHandler); mContext = context; } @Override public void onCreate(SQLiteDatabase db) { //建立一张表来存储当前用户的用户名、密码、备忘录内容、建立时间和提醒时间 /* try{ db.execSQL("create table memorandum (user text primary key, pwd text, memo text," + " establish text, alarm text)"); Log.d("MyDatabaseHelper","create table memorandum succeeded"); }catch (Exception e){ e.printStackTrace(); Log.d("MyDatabaseHelper","create table memorandum failed"); }*/ } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }`
在主活动中的写法如下:
`public class MainActivity extends AppCompatActivity { private MyDatabaseHelper myDatabaseHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myDatabaseHelper = new MyDatabaseHelper(MainActivity.this,"Memorandum.db",null,1,null); } }`
关键的参数就在于
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
mContext = context;
}
这段代码段的int version 参数的传入值得不为0。若为0,则活动加载失败。因此在初始化的时候 version 的传入值必须得不为0。