Android中Sqlite数据库的简单使用

SQLite是Android里的轻量级关系型数据库,它运算速度快,占用资源少,通常只需要几百k的内存就够了,支持标准的sql语法和数据库的ACID事务。
在Android中为了能够更加方便的管理数据库,专门提供了一个SQLiteOpenHelper帮助类,借助这个类就可以非常简单的对数据库进行创建和升级。

一 .界面图

二 .实现
1.实现界面并在activity里绑定视图
。。。。。。。。。。
2.创建StudentDataBaseHelper类继承于SQliteOpenHelper
Android 提供的SQLiteOpenHelper.java是一个抽象类,用来帮助我们实现数据库的操纵,有了SQLiteOpenHelper类,打开SQLiteDatabase的繁杂工作就简单多了

public class StudentDataBaseHelper extends SQLiteOpenHelper {
    //数据库版本号和数据库名
    private static final int VERSION = 1;
    private static final String DATABASE_NAME = "studentBase.db";

    //带全部参数的构造函数,删掉了几个参数,只剩下context,其他都写好了
    public StudentDataBaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, VERSION);
    }
    //onCreate()方法,创建数据库,首次创建数据库时,就会调用onCreate(SQLiteDatabase)方法,本次student表里有name和class列。
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        String sql = "create table student(name varchar(20),class varchar(20))";
        sqLiteDatabase.execSQL(sql);
    }
    //onUpgrade()方法,负责与升级相关的工作,先不写
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        
    }
}

3.新建数据库
final SQLiteDatabase db = new StudentDataBaseHelper(getApplicationContext())
.getWritableDatabase();
复制代码4.对数据库进行操作
负责处理数据库写入和更新操作的辅助类是ContentValues。它是一个键值存储类,类似于Java的HashMap和前面用过的Bundle。不同的是,ContentValues只能用于处理SQLite数据。
(1)增
insert(String table, String nullColumnHack, ContentValues values)
方法传入的第一个参数是数据表,第三个是要写入的数据。
第二个参数称为nullColumnHack。当values参数为空或者里面没有内容的时候,insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,要在这里指定一个列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入。
mInsertButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ContentValues values=new ContentValues();
values.put(“name”, String.valueOf(mInsertStuNameText.getText()));
values.put(“class”, String.valueOf(mInsertStuClassText.getText()));
db.insert(“student”,null,values);
}
});
(2)改
update(String table, ContentValues values, String whereClause, String[] whereArgs)
方法传入表名,value,where子句,where子句的参数值。
mUpdateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ContentValues values2 = new ContentValues();
values2.put(“name”, String.valueOf(mUpdateStuNameText.getText()));
values2.put(“class”, String.valueOf(mUpdateStuClassText.getText()));
db.update(“student”, values2, “name=?”, new String[]{mUpdateStuNameText.getText().toString()});
}
});
(3)删
delete(String table, String whereClause, String[] whereArgs)
方法传入表名,where子句,where子句的参数值。
mUpdateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ContentValues values2 = new ContentValues();
values2.put(“name”, String.valueOf(mUpdateStuNameText.getText()));
values2.put(“class”, String.valueOf(mUpdateStuClassText.getText()));
db.update(“student”, values2, “name=?”, new String[]{mUpdateStuNameText.getText().toString()});
}
});

(4)查
需要cursor,cursor内部就像手指,总是指向查询的某个地方。因此,要从cursor中取出数据,首先要调用moveToFirst()方法移动虚拟手指指向第一个元素。读取行记录后,再调用moveToNext()方法,读取下一行记录,直到isAfterLast()说没有数据可取为止。最后,别忘了调用Cursor的close()方法关闭它。
query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy,String limit)
query方法中limit可以没有,方法的参数含义:

table:表名。
columns:要查询出来的列名。
selection:查询条件子句。
selectionArgs:查询条件子句的值。
groupBy:分组。
having:分组后聚合的过滤条件。
orderBy:排序。
limit:指定偏移量和获取的记录数。

要查哪个人是哪个班的,改selection和selectionArgs的值,比如
Cursor cursor = db.query(“student”, null, “name=?”, new String[]{mQueryText.getText().toString()}, null, null, null);
完整:
mQueryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Cursor cursor = db.query(“student”, null, “name=?”, new String[]{mQueryText.getText().toString()}, null, null, null);
StringBuilder text = new StringBuilder();;
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
String StuName = cursor.getString(cursor.getColumnIndex(“name”));
String StuClass = cursor.getString(cursor.getColumnIndex(“class”));
text.append(StuName).append("\t").append(StuClass).append("\n");
cursor.moveToNext();
}
cursor.close();
mShowTextView.setText(text);
}
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值