0321-SQLite的用法---新建数据库、对数据的增、删、改、查

本文介绍了SQLite在Android系统中的应用,包括SQLite的特性,SQLiteOpenHelper的使用,以及如何通过继承SQLiteOpenHelper实现数据库的创建、升级。同时,详细讲解了如何在Android中进行数据库的增、删、改、查操作,涉及读写模式的选择和具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习SQLite首先要认识SQLite,那么什么是SQLite呢?

1. SQLite数据库存储是Android系统提供的数据存储方式之一
2. SQLite是专为嵌入式设备设计的一款轻量级数据库
3. SQLite占用资源非常低,在嵌入式设备中,只需要几百K的内存
4. SQLite支持标准的SQL语法,遵循数据库的ACID事务
5. SQLite是android系统自带,不需要单独安装,不需要用户名密码就可以使用

关于SQLiteOpenHelper类:

SQLiteOpenHelper是系统提供的一个管理数据库表创建和版本管理(尤其是版本更新)的抽象类,我们必须通过继承SQLiteOpenHelper来实现自己的工具类。 一般我们要重写三个方法,构造器、onCreate方法、onUpgrade方法。
onCreate方法只会在第一次创建数据库时执行,只会执行一次。

SQLite的使用:

使用SQLite创建数据库和数据表:
1.新类继承SQLiteOpenHelper;
2.实现构造方法;
3.重写onCreate方法;
4.重写onUpgrade方法
5.实例化SQLiteOpenHelper的子类对象;
6.调用getWritableDatabase方法或者getReadableDatabase方法;
使用使用SQLite创建数据库和数据表实例,创建一个Student.db数据库,创建一个student表。
//新类继承SQLiteOpenHelper;
 public class MyDatabaseHelper extends SQLiteOpenHelper {

        private Context mContext;
        //实现构造方法;
        public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
            super(context, name, factory, version);
            this.mContext = context;
        }

        /**
         * // * @param context
         * // * @param name 数据库名字
         * // * @param factory 数据库进行查询的时候会返回一个cursor,
         * // 这个cursor就是在上面的factory中产生的。
         * // 如果有需求,可以自定义factory,这样返回的cursor就会符合自己的需求!
         * // * @param version 数据库版本号
         * //
         */
        @Override
        public void onCreate(SQLiteDatabase sqLiteDatabase) {
            //建表语句
            String sql = "create table student(" +
                    "id integer primary key autoincrement not null," +
                    "name text not null," +
                    "age integer ," +
                    "classname text" +
                    ")";
            sqLiteDatabase.execSQL(sql);
            Toast.makeText(Main1Activity.this, "数据库创建成功", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        }
    }
实现数据库的增、删、改、查
新建activity,布置其xml代码:
    <EditText
        android:id="@+id/data_input1"
        android:layout_width="match_parent"
        android:layout_height="50dp" />

    <EditText
        android:id="@+id/data_input2"
        android:layout_width="match_parent"
        android:layout_height="50dp" />

    <Button
        android:id="@+id/create_button"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="创建数据库" />

    <Button
        android:id="@+id/insert_button"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="插入"

        />

    <Button
        android:id="@+id/dele_button"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="删除"

        />

    <Button
        android:id="@+id/change_button"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="修改"

        />

    <Button
        android:id="@+id/found_button"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="查询" />
布置java代码:
创建SQLiteDatabase对象
这里有两种创建方式,分别是:
1、只读模式

SQLiteDatabase sqldb = dbhelper.getReadableDatabase();

2、读写模式

SQLiteDatabase sqldb = dbhelper.getWritableDatabase();

实现创建的四个按钮的增、删、改、查功能:


    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.create_button:
                //点击按钮,创建数据库
                helper.getWritableDatabase();
                break;
            case R.id.insert_button:
                //点击按钮,插入数据
                String input = inputEd.getText().toString();
                //获取写入数据权限
                sqldb = helper.getWritableDatabase();
                //ContentValues类似HashMap,区别是ContentValues只能存简单数据类型,不能存对象
                ContentValues values = new ContentValues();
                //将EditText里面输入的数据,添加至name字段里
                values.put("name", input);
                sqldb.insert(TABLE_NAME, null, values);
                break;

            case R.id.found_button:
                //点击按钮,查询数据
                sqldb = helper.getReadableDatabase();
                //创建游标
                Cursor cursor = sqldb.query(TABLE_NAME, null, null, null, null, null, null);
                //游标置顶
                cursor.moveToFirst();
                //游标获取所需要的数据
                do {
                    String name = cursor.getString(cursor.getColumnIndex("name"));
                    Log.e("name ", name);
                } while (cursor.moveToNext());
                //关闭游标
                cursor.close();
                break;

            case R.id.change_button:
                //点击按钮,修改数据
                //用两个EditText分别获取旧数据和新数据
                String oldname = inputEd.getText().toString();
                String newname = getInputEd.getText().toString();
                sqldb = helper.getWritableDatabase();
                //创建ContentValues储存对象
                ContentValues values1 = new ContentValues();
                values1.put("name", newname);
                sqldb.update(TABLE_NAME, values1, "name=?", new String[]{oldname});
                break;

            case R.id.dele_button:
                //点击按钮,删除数据
                String input1 = getInputEd.getText().toString();
                sqldb = helper.getWritableDatabase();
                sqldb.delete(TABLE_NAME, "name=?", new String[]{input1});
                break;
            default:
                break;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值