SQLite讲解与实例应用

什么是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:
        }

    }
}

猜你喜欢

转载自blog.csdn.net/shaochen2015821426/article/details/79637550