今天看Android视频,看到讲SQLite数据库里建库的方法,看到播主用的是OpenOrCreateDatabase方法,格式为
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase sql=OpenOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);
//第一个参数是数据库名,第二个是MODE
模式,有私有,可读,可写,第三个是查询时游标实例化的一个工程类Cursor。
树上郭神的方法是创建一个MyDatabaseHelper类去继承自带的SQLiteOpenHelper类,然后在Activity里private一个自定义类dbHelper,具体代码如下
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK = "create table book("
+"id integer primary key autoincrement,"
+"author text,"
+"price real,"
+"pages integer,"
+"name text)";
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGORY);
Toast.makeText(mContext, "创建完成", Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
db.execSQL("drop table if exists Book");
db.execSQL("drop table if exists Category");
onCreate(db);
}
}
Activity里的代码如下
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper=new MyDatabaseHelper(this,"BookStore.db",null,3);
}}
在SQLiteOpenHelper里有两个构造方法可以重写,参数为四个,第一个参数是Context,第二个是数据库名,第三个参数允许我们在查询数据时返回一个自定义的Cursor,一般都是null,第四个参数就是当前数据库的版本号,用于对数据库的升级,构建实例后再调用getReadableDatabase()或者getWriteableDatabase()就可以创建数据库了Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbHelper.getWritableDatabase();
}
});
其实看源码也可以搞清楚两种方法区别,具体的看这位大神的解释http://blog.youkuaiyun.com/wangqilin8888/article/details/7903048