Android 中为了我们方便地管理数据库,提供了一个 SQLiteOpenHelper 帮
助类,借助这个类就可以创建数据库。
下面我们就介绍一下该类如何使用。
首先创建一个工程sqlitetest,创建一个类MySQLiteOpenHelper去继承SQLiteOpenHelper,然后重写该类的构造函数和方法。如下:
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory,version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table blacknumber(_id integer primary key autoincrement, number varchar(20))";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
构造函数中有四个参数:
context:这个不用多说,上下文对象。
name: 数据库的名字。
factory:一般传null,基本用不到。
version: 版本号。
onCreate()方法中是创建表的代码。
onUpgrade()方法升级的时候才会调用。
MainActivity中代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/btn_create"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建数据库"/>
RelativeLayout>
package com.example.sqlitetest;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button btn_create;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_create = (Button) this.findViewById(R.id.btn_create);
btn_create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MySQLiteOpenHelper mySQLiteOpenHelper = new MySQLiteOpenHelper(getApplicationContext(),"blacknumber.db",null,1);
SQLiteDatabase db = mySQLiteOpenHelper.getReadableDatabase();
Toast.makeText(MainActivity.this,"数据库创建成功......",Toast.LENGTH_LONG).show();
}
});
}
}
在MainActivity中创建了SQLiteOpenHelper的实例,然后调用它的getWritableDatabase()方法就创建数据库了,
数据库文件会存放在/data/data//databases/目录下。
运行程序,先不点击创建数据库的按钮,打开DDMS,点击File Explorer,
找到/data/data/目录,如图,是没有数据库文件存在的。
然后点击 创建数据库按钮,然后发现效果如图,名叫balcknumber.db的数据库已经被创建出来了:
我们把这个文件导出到电脑桌面上,使用一款图形化界面工具来打开它,当然,该工具我已经共享了,有需要的可以去下载。
工具链接
打开后界面如下图,当然data中是没有任何数据的,因为我们只是创建了表,并没有添加数据到数据库。
现在数据库已经创建好了,我们使用数据库的作用主要就是对其进行增删改查操作,那么我们下面就简单的示范一下。修改MainActivity布局如下。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:id="@+id/btn_create"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建数据库"/>
<Button
android:id="@+id/btn_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加"/>
<Button
android:id="@+id/btn_delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除"/>
<Button
android:id="@+id/btn_update"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改"/>
<Button
android:id="@+id/btn_query"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询"/>
LinearLayout>
MainActivity中代码如下,四个按钮分别对应的增删改查的操作。
package com.example.sqlitetest;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_create;
private MySQLiteOpenHelper mySQLiteOpenHelper;
private SQLiteDatabase db;
private Button btn_add;
private Button btn_delete;
private Button btn_update;
private Button btn_query;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_create = (Button) this.findViewById(R.id.btn_create);
btn_create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mySQLiteOpenHelper = new MySQLiteOpenHelper(getApplicationContext(),"blacknumber.db",null,1);
db = mySQLiteOpenHelper.getReadableDatabase();
Toast.makeText(MainActivity.this,"数据库创建成功......",Toast.LENGTH_LONG).show();
}
});
btn_add = (Button) this.findViewById(R.id.btn_add);
btn_delete = (Button) this.findViewById(R.id.btn_delete);
btn_update = (Button) this.findViewById(R.id.btn_update);
btn_query = (Button) this.findViewById(R.id.btn_query);
btn_add.setOnClickListener(this);
btn_delete.setOnClickListener(this);
btn_update.setOnClickListener(this);
btn_query.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_add:
db = mySQLiteOpenHelper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("number", "188119");
long insert = db.insert("blacknumber", null, values);
db.close();
if(insert != -1){
Toast.makeText(MainActivity.this,"添加数据成功",Toast.LENGTH_LONG).show();
}
break;
case R.id.btn_delete:
db = mySQLiteOpenHelper.getReadableDatabase();
int delete = db.delete("blacknumber", "number=?",
new String[] { "188119" });
db.close();
if(delete !=0){
Toast.makeText(MainActivity.this,"删除数据成功",Toast.LENGTH_LONG).show();
}
break;
case R.id.btn_update:
db = mySQLiteOpenHelper.getReadableDatabase();
ContentValues values2 = new ContentValues();
values2.put("number", "110");
int update = db.update("blacknumber", values2, "number=?",
new String[] { "188119" });
if(update !=0){
Toast.makeText(MainActivity.this,"修改数据成功",Toast.LENGTH_LONG).show();
}
break;
case R.id.btn_query:
db = mySQLiteOpenHelper.getReadableDatabase();
Cursor cursor = db.query("blacknumber", new String[] { "number"},
"number=?", new String[] { "110" }, null, null, null);
boolean exsit = false;
if (cursor != null) {
if (cursor.moveToNext()) {
exsit = true;
}
cursor.close();
}
db.close();
if (exsit){
Toast.makeText(MainActivity.this,"存在该数据",Toast.LENGTH_LONG).show();
}
break;
}
}
}
运行程序到模拟器上,如图。
数据库刚才我们已经创建好了,那么我们就可以直接对数据库进行操作了。点击添加,就把 188119 这个号码添加到了数据库中,
同样的操作把blacknumber.db导出到桌面上使用工具打开,如图:
然后点击删除按钮,重新导出blacknumber.db到桌面,发现数据库中已经没有数据了。
由于下面要对数据进行修改,所以需要添加数据,点击添加,然后点击修改按钮,导出数据发现数据库中number变成了110,如图。
然后我们查询110是否在数据库内,点击查询,发现存在。效果如下:
以上就是数据库的使用。如有错误请指出,谢谢!