SQLite数据库存储之创建数据库

来源:互联网 发布:数据库的复制 编辑:程序博客网 时间:2024/06/05 04:41

根据郭霖的《第一行代码》摘要总结
一.创建数据库
SQLiteOpenHelper是一个抽象类,所以必须要创建一个自己的帮助类去继承它。SQLiteOpenHelper中有两个抽象方法。分别是onCreat()和onUpgrade()方法,因此我们必须在自己的帮助类里面去重写这两个方法,然后分别在这两个数据库中去实现创建,升级数据库的逻辑。

SQLiteOpenHelper中有两个非常重要的实例方法,getReadableDataBase()和getWriteableDataBase()。这两个方法都可以创建或者打开一个现有的数据库(如果数据库已存在则直接打开,否则当就创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。当数据库不可写入的时候,getReadableDataBase()返回的对象只能以只读的方式去打开数据库,而getWriteableDataBase()方法将出现异常。

SQliteOpenHelper中的构造方法的重写,第一个参数是context,第二个参数是数据库名,第三个参数允许我们在查询数据的时候返回一个自定义的Cursor,一般都传入null,第四个参数表示当前数据库的版本号。

要创建一个名为BookStore.db的数据库,在这个数据库中新建一个Book表。

public class MyDatabaseHelper extends SQLiteOpenHelper {    public static final String CREATE_BOOK="create table book("           /*使用了primary key将id列设置为主键,并用autoincrement关键字表示id列是自增长的*/            + "id integer primary key autoincrement,"            +"author text,"            +"price real,"            +"pages integer,"            +"name text)";    private Context mContext;    public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {        super(context, name, factory, version);        mContext=context;    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    }    @Override    public void onCreate(SQLiteDatabase db) {        db.execSQL(CREATE_BOOK);        Toast.makeText(mContext,"创建成功",Toast.LENGTH_SHORT).show();    }}

我们把建表语句定义成了一个字符串常量,并在onCreat()方法中又调用了SQLiteDataBase的execSQL()方法去执行这条建表语句,并弹出Toast提示成功。

修改activity_main.xml中的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.asus.sqlitetest.MainActivity">    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:text="保存" /></LinearLayout>

在布局中加入了创建一个按钮用于创建数据库。
最后修改MainActivity中的代码:

public class MainActivity extends AppCompatActivity {    private MyDatabaseHelper dbhelper;    private Button button1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        dbhelper=new MyDatabaseHelper(this,"BookStore.db",null,1);        button1=(Button)findViewById(R.id.button1);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                dbhelper.getWritableDatabase();            }        });    }}
1 0
原创粉丝点击