SQLite
SQLite是Android系统内置的轻量级关系数据库,它具有运算速度快,占用资源少等优点,通常只需要几百K的内存就足够了,因此特别适合在移动设备上使用。SQLite不仅支持标准的SQL语法,还遵循数据库的ACID事务,所以用过关系型数据库的同学很容易上手SQLite;
创建数据库
android为方便我们管理数据库,专门提供了SQLiteOpenHelper类,借助这个类可以非常简单的对数据库进行创建和升级;但是这个类是抽象类,我们需要自己创建一个新的类去继承它,我们需要重写onCreate()和onUpdate()方法;其次,还有两个非常重要的实例方法:
- getWritableDatabase();
- getReadableDatabase();
这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),并返回一个可以数据库进行读写的操作对象。不同的是,当数据库不可写入的时候(如磁盘空间已满)getReadableDatabase()返回的对象将以只读的方式打开数据库。
SQLiteOpenHelper有两个构造方法可供重写,一般使用参数较少的构造方法:
public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version)
- context:就是上下文的意思,有它才能对数据库进行操作。
- name:创建数据库使用的名称。
- factory:允许我们在查询数据的时候返回一个自定义的Cursor,一般传入null。
- version:当前数据库的版本号,可对数据库进行升级操作。
eg:我们新建一个项目创建一个名为test_database.db数据库
DataBasehelper类继承SQLiteOpenHelper;
public class DataBasehelper extends SQLiteOpenHelper {
private static final String CREATE_DB_ONR="create table users ("
+"id integer primary key autoincrement,"
+"username text,"
+"password text"
+")";
private Context mcontext;
public DataBasehelper(Context context,int version,String database_name) {
super(context, database_name,null, version);
mcontext=context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_DB_ONR);
Toast.makeText(mcontext,"User_DB Succeed",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//当新的versio大于oldversion时候,会执行该方法
}
}
Mainactivity.class
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
public static final String TEST_DATABASE_DB = "test_database.db";
private SQLiteDatabase sqLiteDatabase;
private ContentValues contentValues;
private int result;
private static final String username_column="username";
private static final String password_column= "password";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_create= (Button) findViewById(R.id.btn_add_database);
btn_create.setOnClickListener(this);