SQLiteDatabase(数据库的增删改查)

 public class MainActivity extends Activity { 


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 打开或者创建数据库
        SQLiteDatabase db = null;// 依赖于db执行数据库语法
        db = openOrCreateDatabase("tedu.db", MODE_PRIVATE, null);
        // 创建数据表
//         createTable(db);//创建时调用
        // 增加数据
//         insert(db);//增加时调用
//         newInsert(db);
        // 删除数据
//         delete(db);//删除时调用
//        newDelete(db);
        // 修改数据
        // update(db);//修改数据时调用
//        newUpdate(db);
        // 查询数据
        //newQuery(db);

    }
    
    public void newUpdate(SQLiteDatabase db){
        String table="person";
        ContentValues values=new ContentValues();
        values.put("name", "Jack");
        values.put("age", 18);
        String whereClause="id=?";//where子句,表示要操作的位置
        String[] whereArgs={3+""};//
        int affectedrows = db.update(table, values, whereClause, whereArgs);
        Log.i("info", "受影响行数:"+affectedrows);
        db.close();
    }
    
    public void newDelete(SQLiteDatabase db){
        
        String table="person";//数据表
        String whereClause="name=?";//where子句
        String name="JSON";
        String[] whereArgs={name};
        //返回受影响的行,为int类型
        int rows=db.delete(table, whereClause, whereArgs);
        Log.d("TGA", "rows = "+rows);
        db.close();
        
    }
    public void newInsert(SQLiteDatabase db) {
        String table = "person";
        String nullColumnHack = null;
        ContentValues values = new ContentValues();
        values.put("name", "KUK");// 增加数据,用key和value
        values.put("age", 26);// 增加数据,用key和value
        values.put("gender", 1);// 增加数据,用key和value
        long id = db.insert(table, nullColumnHack, values);
        Log.d("TAG", "ID = " + id);
        db.close();
    }

    // 平时推荐使用
    public void createTable(SQLiteDatabase db) {
        // 创建数据表
        String sql = "create table dtudents(name varchar(16) not null unique, age integer, gender integer, class integer);";
        // 同一张表中的id只会分配一次
        sql = "create table person(id integer primary key autoincrement, age integer, name varchar(16) not null unique, gender integer);";
        db.execSQL(sql);
//        db.close();//对数据进行操作的时候不能关闭数据表,不执行这段代码时,打开或者关闭不影响其他执行
    }

    // 插入数据或增加数据,一次只能增加一个数据
    public void insert(SQLiteDatabase db) {
        String sql = "";// 需要其语法对其引用和注入
        sql = "insert into person (name, gender, age) values ('Black', 1, 21)";
        db.execSQL(sql);

        sql = "insert into person (gender, name, age) values (1, 'JSON', 25)";
        db.execSQL(sql);

        sql = "insert into person (age, name) values (15, 'Billy')";
        db.execSQL(sql);
        sql = "insert into person (age, name, gender) values (18, 'jeo', 0)";
        db.execSQL(sql);
        db.close();
    }

    public void delete(SQLiteDatabase db) {
        String sql = "delete from students where name = 'KUK'";

        // 同一个字符串被重新赋值,执行下面的语句
        sql = "delete from person where id=4";
        db.execSQL(sql);
        db.close();
    }

    public void update(SQLiteDatabase db) {
        String sql = "update person set age=15 where id=1 or id=3";
        db.execSQL(sql);
        db.close();
    }

    public void newQuery(SQLiteDatabase db) {
        // The table name to compile the query against.针对数据表进行编译
        String table="person";
        /*
         * A list of which columns to return. Passing null will return all
         * columns, 返回行数(要查询的字段列表),如果是null值,返回所有行数(表示查询所有字段)如,String[]
         * columns=null; which is discouraged to prevent reading data from
         * storage that isn't going to be used
         */
        String[] columns = {"name", "age", "gender", "id"};
        String selection = "name=?";// where子句,参考delete()方法的参数whereClause
        String jack = "jack";;
        String[] selectionArgs = {jack};// 参考delete()方法的参数whereArgs
        String groupBy = null;// 无视
        String having = null;// 无视
        String orderBy = null;// (order by子句,不需要填写“order by”关键字)
        Cursor cursor = db.query(table, columns, selection, selectionArgs,
                groupBy, having, orderBy);
        // --- 遍历方式1 ---
        /**
         *Move the cursor to the first row.移动光标到第一行
         *This method will return false if the cursor is empty.如果光标为空,返回false
         *@reture  返回值为是否移动成功
         */
        // while(c.moveToNext()) {
        //
        // }
        // --- 遍历方式2 ---
        // if(c.moveToFirst()) {
        // do {
        //
        // } while(c.moveToNext());
        // }
        // --- 遍历方式3 ---
        //for(初始条件;终止条件;每次变动的条件){}
        for (cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()) {
            Log.i("tag", "------------------------------------------");
            Log.i("tag", "name = "+cursor.getString(cursor.getColumnIndex("name")));
            Log.i("tag", "id = "+cursor.getInt(cursor.getColumnIndex("id")));
            Log.i("tag", "gender = "+cursor.getInt(cursor.getColumnIndex("gender")));
            Log.i("tag", "age"+cursor.getInt(cursor.getColumnIndex("age")));
            
        }
        if (!cursor.isClosed()) {
            cursor.close();
        }
    }

}


### 回答1: Android Studio 中的数据库增删改查操作可以通过使用 SQLite 数据库实现。以下是一些基本的操作: 1. 增加数据:使用 insert() 方法向数据库中添加新的数据。 2. 删除数据:使用 delete() 方法从数据库中删除数据。 3. 修改数据:使用 update() 方法修改数据库中的数据。 4. 查询数据:使用 query() 方法从数据库中查询数据。 在进行这些操作之前,需要先创建数据库和表格,并定义相应的数据模型。可以使用 SQLiteOpenHelper 类来创建和管理数据库。 在进行增删改查操作时,需要使用 SQLiteDatabase 类来执行相应的操作。可以使用 ContentValues 类来存储数据,以便在插入或更新数据时使用。 需要注意的是,在进行数据库操作时,应该使用异步任务或线程来执行,以避免阻塞 UI 线程。可以使用 AsyncTask 类或 HandlerThread 类来实现异步操作。 以上是 Android Studio 中数据库增删改查的基本操作,具体实现可以参考相关的文档和示例代码。 ### 回答2: Android Studio 是一个常用的开发工具,它的数据库操作功能不仅能够帮助开发者提高开发效率,还能帮助我们更好地处理数据。接下来将会介绍如何在 Android Studio 中对数据库进行增删改查。 1. 创建数据库 Android 中的数据库操作依赖 SQLite,所以需要先引入 SQLite 相关的依赖。然后在创建数据库之前,需要定义表的结构。这可以通过创建一个 Java 类来实现。在该类中定义表的结构,每个属性代表表的一列。创建完 Java 类后,使用该类中的属性创建数据库表。下面是一个例子: ```java public class DBHelper extends SQLiteOpenHelper { public static final String CREATE_USER = "create table user (" + "id integer primary key autoincrement, " + "name text, " + "age integer, " + "height real)"; private Context mContext; private SQLiteDatabase db; public DBHelper(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_USER); Toast.makeText(mContext, "创建数据库成功", Toast.LENGTH_SHORT).show(); db = sqLiteDatabase; } } ``` 在上面的代码中,我们创建了一个 DBHelper 类来操作数据库,其中 CREATE_USER 是创建数据表 user 的 SQL 语句,onCreate 方法中调用了 sqLiteDatabase 的执行 SQL 语句方法 execSQL,从而创建了 user 数据表。 2. 数据库增删改查 接下来,我们需要对数据库进行增删改查操作。常见的数据库操作有增加数据、删除数据、修改数据和查询数据。 增加数据: ```java ContentValues values = new ContentValues(); values.put("id", 1); values.put("name", "小明"); values.put("age", 20); values.put("height", 1.75); db.insert("user", null, values); ``` 对表 user 进行插入数据操作,使用 ContentValues 对象组装待插入的数据,调用 SQLiteDatabase 的 insert 方法,即可完成数据插入。 删除数据: ```java db.delete("user", "id = ?", new String[]{"1"}); ``` 其中 delete 方法需要传入三个参数,第一个参数是表明,第二个参数是 SQL 语句中的 WHERE 条件,第三个参数是 WHERE 条件的占位符。 修改数据: ```java ContentValues values = new ContentValues(); values.put("age", 21); values.put("height", 1.80); db.update("user", values, "id = ?", new String[]{"1"}); ``` 其中 update 方法也需要传入三个参数,第一个参数是表明,第二个参数是待更新的数据,第三个参数是 SQL 语句中的 WHERE 条件。 查询数据: ```java Cursor cursor = db.query("user", null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); float height = cursor.getFloat(cursor.getColumnIndex("height")); Log.i(TAG, "id:" + id + " 姓名:" + name + " 年龄:" + age + " 身高:" + height); } ``` 其中 query 方法需要传入七个参数,第一个参数是表名,第二个参数是待查询的列名,第三个到第七个参数是 SQL 中的其他操作,返回值是一个 Cursor 对象,通过遍历该对象的数据,即可完成数据查询。 3. 总结 Android Studio 数据库操作中,最重要的是创建数据库和创建表的工作,需要在代码中显式地创建和定义。增删改查的操作本质上是对数据库和表的增删改查操作,需要通过调用相应的方法进行实现。每个方法都需要传入对应的参数,因此在操作时必须弄清楚参数的含义和对应的 SQL 语句的语法。 ### 回答3: Android Studio是Android开发人员非常常用的一款集成开发环境(IDE)。在Android应用开发中,常常需要用到数据库来进行数据存储。而数据库的操作包括增、删、改、查四个方面,而这四个方面的实现是相对独立的。 以下将针对Android Studio中对数据库增删改查的实现进行讲解。 首先,需要了解Android开发中常用的SQLite数据库。在Android Studio中,我们可以使用SQLiteOpenHelper类来创建和管理数据库SQLiteOpenHelper中有两个方法是非常重要的:onCreate()和onUpgrade()。onCreate()方法用于第一次创建数据库时进行表结构的创建,onUpgrade()方法用于数据库版本升级时进行数据迁移。 接下来,我们分别介绍如何实现增、删、改、查四个操作。 1. 数据库增加数据 对于SQLite数据库而言,数据的添加直接使用SQL语句即可。如下面的示例代码所示: ```Java public void insertData(String name, String age) { SQLiteDatabase db = this.getWritableDatabase(); //获取可写数据库 ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); db.insert("user", null, values); db.close(); } ``` 首先,我们需要获取可写数据库,然后将要插入的数据封装到ContentValues对象中,最后使用insert()方法在表中增加数据即可。 2. 数据库删除数据 对于数据库中的数据删除操作,同样需要使用SQL语句。如下面的示例代码所示: ```Java public void deleteData(int id) { SQLiteDatabase db = this.getWritableDatabase(); //获取可写数据库 db.delete("user", "id = ?", new String[]{ String.valueOf(id) }); db.close(); } ``` 其中,delete()函数中的第二个参数用于指定删除数据库的条件。删除指定id的一行数据,调用delete()时就可以把id传入参数中。 3. 数据库更新数据 数据库中的数据更新操作同样需要使用SQL语句,可以使用update()方法来进行更新。如下面的示例代码所示: ```Java public void updateData(int id, String name, String age) { SQLiteDatabase db = this.getWritableDatabase(); //获取可写数据库 ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); db.update("user", values, "id = ?", new String[]{ String.valueOf(id) }); db.close(); } ``` 其中的update()方法需要传入的参数分别为需要更新的内容、更新条件和条件参数。根据id值找到对应的一行数据,从而进行更新操作。 4. 数据库查询数据 Android Studio提供了非常方便的查询接口,使用query()方法可以方便地完成数据的查询操作。如下面的示例代码所示: ```Java public Cursor queryData() { SQLiteDatabase db = this.getWritableDatabase(); //获取可写数据库 Cursor cursor = db.query("user", new String[]{ "id", "name", "age" }, null, null, null, null, null); return cursor; } ``` 这里的Cursor对象代表一个指向查询结果的指针,可以通过它来遍历整个结果集。在上面的示例代码中,query()方法中的第一个参数指定了查询的表名,第二个参数指定了需要查询的字段,第三个参数指定了查询条件,第四、五、六个参数分别表示分组、过滤和排序的条件。最后返回查询结果的Cursor对象即可。 总结: 本文介绍了Android Studio中如何使用SQLiteOpenHelper类来创建和管理数据库,以及如何实现数据库的增、删、改、查四个操作。SQLite数据库是Android中最常用的数据库之一,它轻巧便捷,对于简单的数据存储操作非常方便。在实际开发中,可以根据具体的需求,灵活使用各种数据库操作方式来实现功能的开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值