SQLite数据库

通过SQLiteOpenHelper类可以实现对数据库的创建和升级。首先,SQLiteOpenHelper是一个抽象类,如果要使用这个类,只能通过创建一个帮助类去继承他。这个抽象类中有两个抽象方法,onCreate()和onUpgrade(),我们需要在自己的类中实现并重写这两个方法,然后在这两个方法中去创建和升级数据库的逻辑。

SQLiteOpenHelper类中还有两个非常重要的实例方法,getWritableDatabase()和getReadableDatabase(),这两个方法都能够创建或者打开一个现有的数据库,并返回一个可对数据库进行读写操作的对象,当磁盘空间已经满的时候,getReadableDatabase()方法返回的对象将以只读的方式打开数据库,getWritableDatabase()方法将出现异常。

SQLiteOpenHelper类有两个可以用的构造方法,一般用参数比较少的那个。
SQliteOpenHelper(Context context,"databasename",null,"version of database"){}

实例

创建一个名为book的数据库

  • 新建一个类继承自SQLiteHelper,要重写里面的主要方法,同时在onCreate()方法中执行SQL语句。
package ouc.b304.com.sqlitetest;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class MySQLite extends SQLiteOpenHelper {

    private static final String TAG="DATABASE";
    private static final String CREATETABLE="create table book("+" id integer primary key autoincrement,"+"author text"+"price real"+"pages integer"+"name text)";



    public MySQLite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }



    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(CREATETABLE);
        Log.d(TAG,"is created");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}
  • 在MainActivity中实现布局和逻辑
package ouc.b304.com.sqlitetest;

import android.database.sqlite.SQLiteOpenHelper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.btn_createdatabase);
        final SQLiteOpenHelper myHelper = new MySQLite(getApplicationContext(), "book", null, 1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                myHelper.getWritableDatabase();
            }
        });
    }

}
  • 在实例化自己的SQLiteHelper类以后,要通过getWritableDatabase()方法才能得到数据库实例。
  • 如果数据库已经成功创建,那么再次点击创建的时候,数据库不会重复创建。

对数据库进行升级

如果想要在数据库中再次添加一张表,可以通过在自建SQLiteHelper类中的onUpgrade()方法中添加逻辑实现,并不能在onCreate()方法中添加逻辑实现新表的创建,同时应该在onUpgrade()方法中进行逻辑的判断,因为前提是数据库的表从来没有新建过,如果一旦onCreate()方法执行过一次之后,那么再次修改onCreate()方法是无用的。

如果想实现数据库的升级,应当在MainActivity中创建MyHelper实例的时候把versioncode更改为比1大的数。

你可能感兴趣的:(SQLite数据库)