文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

android中SQLite使用及特点

2024-04-02 19:55

关注

1.SQLite的特点

2.SQLite的使用

 2.1数据库的创建

在android中,创建SQLite数据库非常简单。Android系统推荐使用SQLiteOpenHelper的子类创建数据库,因此需要创建一个类继承自SQLiteOpenHelper,并重写该类的onCreateonUpgrade方法即可

在这里插入图片描述


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DBHelper extends SQLiteOpenHelper {

    
    public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 初始化数据库的表结构,执行一条建表的SQL语句
        db.execSQL("create table user(u_id int not null primary key,u_name varchar(50) not null,age int)");
    }

    	
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

2.2新增(insert)


 public void insert(String name,int age){
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        // 创建ContentValue设置参数
        ContentValues contentValues=new ContentValues();
        contentValues.put("name",name);
        contentValues.put("age",age);
        // 插入数据
        // insert方法参数1:要插入的表名
        // insert方法参数2:如果发现将要插入的行为空时,会将这个列名的值设为null
        // insert方法参数3:contentValue
        long i=db.insert("user",null ,contentValues);

        // 释放连接
        db.close();
    }

2.3修改(update)


 public void update(String name,int age){
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        // 创建ContentValue设置参数
        ContentValues contentValues=new ContentValues();
        contentValues.put("age",age);
        // 修改数据
        // 参数1:tablename
        // 参数2:修改的值
        // 参数3:修改的条件(SQL where语句)
        // 参数4:表示whereClause语句中的表达式的占位符参数列表,这些字符串会替换where条件中?
        db.update("user",contentValues,"name=?",new String[]{name});

        // 释放连接
        db.close();
    }

2.4删除(delete)


 public void delete(long id) {
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // 参数1:tablename
        // 参数2:删除的条件(SQL语句)
        // 参数3:给修改的条件注入参数,一个或多个
        db.delete("user", "u_id=?", new String[]{id + ""});
        // 释放连接
        db.close();
    }

2.5查询(query)


 public void query() {
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // 参数1:table_name
        // 参数2:columns 要查询出来的列名。相当于 select  *** from table语句中的 ***部分
        // 参数3:selection 查询条件字句,在条件子句允许使用占位符“?”表示条件值
        // 参数4:selectionArgs :对应于 selection参数 占位符的值
        // 参数5:groupby 相当于 select *** from table where && group by ... 语句中 ... 的部分
        // 参数6:having 相当于 select *** from table where && group by ...having %%% 语句中 %%% 的部分
        // 参数7:orderBy :相当于 select  ***from ??  where&& group by ...having %%% order by@@语句中的@@ 部分,如: personid desc(按person 降序)
        Cursor cursor = db.query("user", null, null, null, null, null, null);

        // 将游标移到开头
        cursor.moveToFirst();

        while (!cursor.isAfterLast()) { // 游标只要不是在最后一行之后,就一直循环

             int id=cursor.getInt(0);
             String name=cursor.getString(1);
             
             // 将游标移到下一行
             cursor.moveToNext();

        }
        
        db.close();
    }

3.使用SQL语句进行数据库操作


// 通过DBHelper类获取一个读写的SQLiteDatabase对象
SQLiteDatabase db = dbHelper.getWritableDatabase();

 // insert
db.execSQL("insert into user (id,name,age) values (?,?,?)",new Object[]{1,"张三",18});
// update
db.execSQL("update user set name=? where id=?",new Object[]{"张三",1});
// delete
db.execSQL("delete from user where id=1");
// query
Cursor cursor = db.rawQuery("select * from user where id=?", new String[]{"1"});

4.SQLite事务

SQLite数据库同样支持事务

事务操作后一定要使用endTransaction()方法关闭事务,当执行到endTransaction()时,首先会检查是否有事务执行成功标记,有则提交数据库,无则回滚数据


	DBHelper dbHelper = new DBHelper(MainActivity.this, "test.db", null, 0);
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db = dbHelper.getWritableDatabase();

        // 开始事务
        db.beginTransaction();
        try {
            
            // 标记数据库事务执行成功
            db.setTransactionSuccessful();
        }catch (Exception e){
            Log.i("事务处理失败",e.getMessage());
        }finally {
            db.endTransaction(); //关闭事务
            db.close(); // 关闭数据库
        }

到此这篇关于android中SQLite使用及特点的文章就介绍到这了,更多相关android使用SQLite内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯