什么是SQLite
是数据库,是Android系统提供的数据存贮方式之一
SQLite占用的资源非常少,只有几百K
SQLite不仅支持标准的SQL语句,还遵循数据库的ACID事务
SQLite不需要安装,不需要用户名和密码就可以使用
如何使用SQLite
1.创建数据库和数据表
2.添加数据
3.修改数据
4删除数据
4.查询数据
创建数据库和数据表的步骤
1.新建类继承SQLiteOpenHelper
public class MyDataBaseHelper extends SQLiteOpenHelper{
2.实现构造方法
private Context context;
public MyDataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.context = context;
}
3.重写OnCreate()方法和onUpgrade()方法
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
4.activity中实例化SQLiteOpneHelper的子类对象,调用getReadableDatabase()或getWritableDatabase()方法
dbHelpter = new MyDataBaseHelper(MainActivity.this, "studentdb", null, 1);
dbHelpter.getWritableDatabase();
下面我们就用实例来演示如何创建数据库的,同时,因为数据的增删改查代码比较集中,只要在监听事件中进行修改就可以了,所以在实例中,直接完成对数据库的创建,增删改查。
效果展现(通过在查按钮中添加打印功能,来展现效果)
创
增
改
删
代码实现步骤:
1.创建自定义类继承SQLiteOpenHelper,实现两个方法,和一个构造方法
//创建自定义类继承SQLiteOpenHelper,实现两个方法,和一个构造方法
public class MyDataBaseHelper extends SQLiteOpenHelper{
//创建stu表的语句
public static final String CREATE_BOOK = "create table stu(" +
"id integer primary key autoincrement," +
"name text," +
"gender text," +
"score real," +
"className text)";
//构造方法
private Context context;
public MyDataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.context = context;
}
//重写onCreate()方法,执行建表语句
@Override
public void onCreate(SQLiteDatabase db) {
//创建数据库
db.execSQL(CREATE_BOOK);
Toast.makeText(context,"Create successful",Toast.LENGTH_SHORT).show();
}
//重写onUpgrade()此方法在更新数据表用到,现在不用
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2.修改布局文件,添加控件,设置ID
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.myapplication2.MainActivity">
<Button
android:id="@+id/create_db_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建数据库" />
<EditText
android:id="@+id/main_et"
android:layout_width="match_parent"
android:layout_height="50dp" />
<EditText
android:id="@+id/main_updata_et"
android:layout_width="match_parent"
android:layout_height="50dp" />
<Button
android:id="@+id/main_insert_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="增" />
<Button
android:id="@+id/main_update_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="改" />
<Button
android:id="@+id/main_delete_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="删" />
<Button
android:id="@+id/main_show_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查" />
</LinearLayout>
3.在MainActivity界面中实现对控件的监听,实现创建数据库,增删改查
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private MyDataBaseHelper dbHelpter;
private Button dbCreateBtn;
private EditText editText;
private EditText updataEt;
private Button updataBtn;
private Button insertBtn;
private Button showBtn;
private Button deleteBtn;
private String str;
private String TAG = "MainActivity";
private String upstr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创MyDataBaseHelper对象(params1:上下文环境,params2:数据库名,params3:允许我们在查询数据的时候返回一个cursor,这里添null,就可以了,params4:数据库版本号)
dbHelpter = new MyDataBaseHelper(MainActivity.this, "studentdb", null, 1);
bangID();
}
private void bangID() {
dbCreateBtn = findViewById(R.id.create_db_btn);
editText = findViewById(R.id.main_et);
showBtn = findViewById(R.id.main_show_btn);
insertBtn = findViewById(R.id.main_insert_btn);
updataEt = findViewById(R.id.main_updata_et);
updataBtn = findViewById(R.id.main_update_btn);
deleteBtn = findViewById(R.id.main_delete_btn);
dbCreateBtn.setOnClickListener(this);
editText.setOnClickListener(this);
showBtn.setOnClickListener(this);
insertBtn.setOnClickListener(this);
updataBtn.setOnClickListener(this);
deleteBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.main_et:
break;
case R.id.main_insert_btn:
//获得输入的数据
str = editText.getText().toString();
//创建SQLiteDatabase的对象
SQLiteDatabase db = dbHelpter.getWritableDatabase();
//创建ContentValues对象,又来添加数据
ContentValues values = new ContentValues();
values.put("name",str);
//插入数据(param1 :表名,param2:在未指定的数据的情况下赋值为空,params3:值)
db.insert("stu",null,values);
Toast.makeText(MainActivity.this,"增成功",Toast.LENGTH_SHORT).show();
break;
case R.id.main_show_btn:
//创建SQLiteDatabase对象
SQLiteDatabase db1 = dbHelpter.getWritableDatabase();
//使用游标,游历表中所有数据(params1:表名,params2:指定查询的列名,param3:指定where约束条件;params4:占位符具体值;下面的参数与分组,排序有关)
Cursor cursor = db1.query("stu",null,null,null,null,null,null);
if(cursor.moveToFirst()){
do{
//取数据
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.e(TAG, "onClick: "+name);
}while (cursor.moveToNext());
}
cursor.close();
Toast.makeText(MainActivity.this,"查成功",Toast.LENGTH_SHORT).show();
break;
case R.id.create_db_btn:
//创建数据库
dbHelpter.getWritableDatabase();
break;
case R.id.main_update_btn:
str = editText.getText().toString();
upstr = updataEt.getText().toString();
SQLiteDatabase dbupdata =dbHelpter.getWritableDatabase();
ContentValues values1 = new ContentValues();
values1.put("name",upstr);
dbupdata.update("stu",values1,"name = ?",new String[]{str});
Toast.makeText(MainActivity.this,"改成功",Toast.LENGTH_SHORT).show();
break;
case R.id.main_delete_btn:
str = editText.getText().toString();
SQLiteDatabase dbdelete =dbHelpter.getWritableDatabase();
dbdelete.delete("stu","name=?",new String[] {str});
Toast.makeText(MainActivity.this,"删成功",Toast.LENGTH_SHORT).show();
break;
default:
}
}
}