安卓数据库操作

本文详细介绍了如何在安卓应用中利用SQLite数据库进行数据存储与管理,包括数据库类的创建、版本控制、数据操作方法以及关键操作如创建表、插入数据、更新、删除和查询数据等。此外,还展示了如何通过实例化类并调用其方法来进行实际的数据操作。

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

安卓提供了SQLite数据库,可以用来存储更多的数据。通过继承SQLiteOpenHelper类来操作数据库。
public class MyDatabaseHelper extends SQLiteOpenHelper

然后实现它的三个方法,构造方法,onCreate()方法,onUpgrade()方法。
我们可以在onCreate()方法执行数据库的操作,例如:

 public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("create table Book("
            +"id Integer primary key autoincrement,"
            +"author text,"
            +"price real,"
            +"pages integer,"
            +"name text,"
            +"category_id integer)");
    }

当涉及版本升级时,我们使用onUpgrade()方法,同时在这里强烈建议配合switch语句来控制版本的更新操作,例如:

public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        switch(i){
                 case 1:
                    sqLiteDatabase.execSQL("alter table Book add column category_id   integer");
                 default:
        }
 }

注意:在这里的switch是没有break语句的,这样能使版本变化时完成所有需要的更新。

我们的所有数据库操作语句都是在这个类里实现的,通过实例化这个MyDatabaseHelper类,我们可以方法的使用它的方法来执行数据库的操作,例如:

//实例化MyDatabaseHelper
MyDatabaseHelper myDatabaseHelper = new MyDatabaseHelper(this,"BookStore.db",null,10);
//设置创建表按钮
        Button createDBbtn = (Button)findViewById(R.id.btn);
        createDBbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            //使用getWritableDatabase()获取数据库可操作
                myDatabaseHelper.getWritableDatabase();
            }
        });

        //添加数据按钮
        Button addbtn = (Button)findViewById(R.id.add_btn);
        addbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            //使用SQLiteDatabase对象来执行语句,需要三个参数,第一个为表名,第二个参数可选,可以为null,第三个为数据操作,通过contentValues完成
                SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
                ContentValues contentValues = new ContentValues();
                contentValues.put("name","thinking in android");
                contentValues.put("author","Mr. Zhang");
                contentValues.put("pages",0);
                contentValues.put("price",0.0);
                db.insert("Book", null, contentValues);
                contentValues.clear();
                contentValues.put("name", "The Lost Symbol");
                contentValues.put("author", "Dan Brown");
                contentValues.put("pages", 510);
                contentValues.put("price", 19.95);
                db.insert("Book", null, contentValues);
            }
        });
//更新数据库表按钮
        Button updbtn = (Button)findViewById(R.id.update_btn);
        updbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
                ContentValues contentValues = new ContentValues();
                contentValues.put("price",10.0);
                db.update("Book", contentValues, "name = ?", new String[]{"thinking in android"});

            }
        });
//数据数据库表中数据按钮
        Button delbtn = (Button)findViewById(R.id.del_btn);
        delbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
                db.delete("Book", "name = ?", new String[]{"The Lost Symbol"});
            }
        });
//查询数据库按钮,参数很多,这里只用了一个参数
        Button querybtn = (Button)findViewById(R.id.query_btn);
        querybtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = myDatabaseHelper.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"));
                        Float price = cursor.getFloat(cursor.getColumnIndex("price"));
                        int pages = cursor.getInt(cursor.getColumnIndex("pages"));
                        Log.d("MainActivity", "book name is " + name);
                        Log.d("MainActivity", "book author is " + author);
                        Log.d("MainActivity", "book pages is " + pages);
                        Log.d("MainActivity", "book price is " + price);
                    }while(cursor.moveToNext());
                }
                cursor.close();
            }
        });
//替换数据按钮,这里要结合数据库事务执行
        Button replacebtn = (Button)findViewById(R.id.replace_btn);
        replacebtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
                //开始事务
                db.beginTransaction();
                try{
                    db.delete("Book", null, null);
                    ContentValues contentValues = new ContentValues();
                    contentValues.put("name","Android develop");
                    contentValues.put("author","Mr. Android");
                    contentValues.put("price",100.0);
                    contentValues.put("pages",572);
                    db.insert("Book",null,contentValues);
                    //事务成功执行
                    db.setTransactionSuccessful();
                }catch (Exception e){
                    e.printStackTrace();
                }finally{
                //事务结
                    db.endTransaction();
                }
            }
        });

除了使用SQLiteHelper提供的方法,也可以直接用SQL语法来执行数据库操作哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值