1.定义:SQLite是一款轻量级的关系型数据库,运行快,占用资源少。
2.创建数据库
*android为方便管理数据库,专门提供了SQLiteOpenHelper帮助类可以简单地对数据库进行创建和升级。
*SQLiteOpenHelper是一个抽象类,有两个抽象方法,分别是onCreate()、onUpgrade()负责数据库的创建和升级。
*SQLiteOpenHelper中还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase()。这两个
方法都可以创建或打开一个现有的数据库(如数据库已存在则直接打开,否则创建一个新的数据库),并返回一
个可对数据库进行读写操作的对象。不同的是,当数据库不可写入时(如磁盘已满),getReadableDatabase()
方法返回的对象将以只读的方式打开数据库,而getWritableDatabase()方法则将出现异常。
*SQLiteOpenHelper中有两个构造方法可供重写,一般使用参数少的构造方法即可。这个构造方法接收四个参数,
第一个参数是Context,第二个参数是数据库名,第三个参数允许我们在查询数据的时候返回一个自定义的Cursor,
一般都传入null,第四个参数表示数据库的版本号。数据库文件存放在/data/data/<package name>/databases/目录
下。
步骤:首先书写创建语句,然后自定义一个类继承SQLiteOpenHelper然后执行。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/create_database"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="创建数据库"/>
<Button
android:id="@+id/add_data"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="添加数据"/>
<Button
android:id="@+id/update_data"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="更新数据"/>
<Button
android:id="@+id/delete_data"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="删除数据"/>
<Button
android:id="@+id/query_data"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="查询数据"/>
</LinearLayout>
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)";
private Context mContext;
public MyDatabaseHelper(Context context,String name,SQLiteDatabase.CursorFactory
factory, int version) {
super(context, name, factory, version);
mContext=context;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//创建数据库
sqLiteDatabase.execSQL(CREATE_BOOK);
Toast.makeText(mContext,"Created successed",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion)
{
}
}
public class MainActivity extends AppCompatActivity {
Button createDatabase;
Button addData;
Button updateData;
Button deleteData;
Button queryData;
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
createDatabase=findViewById(R.id.create_database);
addData=findViewById(R.id.add_data);
updateData=findViewById(R.id.update_data);
deleteData=findViewById(R.id.delete_data);
queryData=findViewById(R.id.query_data);
//1创建数据库
dbHelper=new MyDatabaseHelper(this,"BookStore.db",null,1);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbHelper.getWritableDatabase();
}
});
}
}
3.升级数据库
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)";
//省级数据库
public static final String CREATE_CATEGORY="create table Category("
+"id integer primary key autoincrement,"
+"category_name text,"
+"category_code integer)";
private Context mContext;
public MyDatabaseHelper(Context context,String name,SQLiteDatabase.CursorFactory
factory, int version) {
super(context, name, factory, version);
mContext=context;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//创建数据库
sqLiteDatabase.execSQL(CREATE_BOOK);
//升级数据库
sqLiteDatabase.execSQL(CREATE_CATEGORY);
Toast.makeText(mContext,"Created successed",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
sqLiteDatabase.execSQL("drop table if exists Book");
sqLiteDatabase.execSQL("drop table if exists Category");
onCreate(sqLiteDatabase);
}
}
public class MainActivity extends AppCompatActivity {
Button createDatabase;
Button addData;
Button updateData;
Button deleteData;
Button queryData;
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
createDatabase=findViewById(R.id.create_database);
addData=findViewById(R.id.add_data);
updateData=findViewById(R.id.update_data);
deleteData=findViewById(R.id.delete_data);
queryData=findViewById(R.id.query_data);
//1创建数据库
// dbHelper=new MyDatabaseHelper(this,"BookStore.db",null,1);
//升级数据库
dbHelper=new MyDatabaseHelper(this,"BookStore.db",
null,2);
}
}
4.添加数据
public class MainActivity extends AppCompatActivity {
Button createDatabase;
Button addData;
Button updateData;
Button deleteData;
Button queryData;
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
createDatabase=findViewById(R.id.create_database);
addData=findViewById(R.id.add_data);
updateData=findViewById(R.id.update_data);
deleteData=findViewById(R.id.delete_data);
queryData=findViewById(R.id.query_data);
//1创建数据库
// dbHelper=new MyDatabaseHelper(this,"BookStore.db",null,1);
//升级数据库
dbHelper=new MyDatabaseHelper(this,"BookStore.db",
null,2);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbHelper.getWritableDatabase();
}
});
//添加数据
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name","The Da Vinci Code");
values.put("author","Dan Brown");
values.put("pages",454);
values.put("price",15.34);
//插入一条数据
db.insert("Book",null,values);
values.clear();
//开始第二组数据
values.put("name","The Lost Symbol");
values.put("author","Dan Brown");
values.put("pages",510);
values.put("price",23.43);
//插入第二条数据
db.insert("Book",null,values);
}
});
}
}
5.更新数据
//更新数据
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("price",12.23);
db.update("Book",values,"name=?",new String[]{
"The Da Vinci Code"
});
}
});
6.删除数据
//删除数据
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db=dbHelper.getWritableDatabase();
db.delete("Book","pages>?",new String[]{"500"});
}
});
7.查询数据
//查询数据
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db=dbHelper.getWritableDatabase();
Cursor cursor=db.query("Book",null,null,
null,null,null,null);
if (cursor.moveToFirst()){
do {
String name=cursor.getString(cursor.getColumnIndex("name"));
String author=cursor.getString(cursor.getColumnIndex("author"));
int pages=cursor.getInt(cursor.getColumnIndex("pages"));
double price=cursor.getDouble(cursor.getColumnIndex("price"));
}while (cursor.moveToNext());
}
cursor.close();
}
});