安卓开发中SQLite的使用

使用SQLite是安卓开发最中常用的数据处理方式之一, SQLite可以非常方便的进行数据存储,管理和维护等等。废话不多说,下面我来简单的介绍一下安卓中关于SQLite的使用。

1,创建数据库类

安卓中提供SQLiteOpenHelper类,用来管理数据库的创建和版本更新,它是SQLiteDatabase的一个帮助类。我们在平时开发过程中一般是继承SQLiteOpenHelper类,并实现它的onCreate()方法和onUpgrade()方法
public class DBOpenHelper extends SQLiteOpenHelper {

    private static final String DB_NAME = "account.db";//建立数据库名称
    private static final int VERSION = 1;//数据库的版本

    public DBOpenHelper(Context context) {
        super(context, DB_NAME, null, VERSION);
        // TODO Auto-generated constructor stub
    }

    // 首次创建数据库的时候调用, 一般可以把建库建表的操作在里边执行
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("create table if not exists stu_tb(_id integer primary key autoincrement, name text not null, sex text not null, age integer not null)");
    }
    // 当数据库版本发生变化时自动执行
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

2,数据库类创建好了之后,我们就可以在其他地方调用这个类

DBOpenHelper helper= new DBOpenHelper(context);
SQLiteDatabase db = null;
db = helper.getWritableDatabase();
//接下来就可以进行数据库的增删改查

3,对于数据库的增删改查,SQLiteDatabase类为我们提供了很多方法,其中比较常用方法介绍如下:

(返回值)方法名 方法描述
(int) delete(String table,String whereClause,String[] whereArgs) 删除数据行的便捷方法
(long) insert(String table,String nullColumnHack,ContentValues values) 添加数据行的便捷方法
(int) update(String table, ContentValues values, String whereClause, String[] whereArgs) 更新数据行的便捷方法
(void) execSQL(String sql) 执行一个SQL语句,可以是一个select或其他的sql语句
(void) close() 关闭数据库
(Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) 查询指定的数据表返回一个带游标的数据集
(Cursor) rawQuery(String sql, String[] selectionArgs) 运行一个预置的SQL语句,返回带游标的数据集(与上面的语句最大的区别就是防止SQL注入)

接下来详细介绍增删改查的方法
数据添加:
    ①,使用insert

ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据cv.put("password","123456");//添加用户名
cv.put("password","123456"); //添加密码
db.insert("stu_tb",null,cv);//执行插入操作

   ②,使用execSQL

String sql = "insert into stu_tb(username,password) values ('Michael','123456');//插入操作的SQL语句
db.execSQL(sql);//执行SQL语句

数据删除
   ①,

String whereClause = "username=?";//删除的条件
String[] whereArgs = {"Michael"};//删除的条件参数
db.delete("stu_db",whereClause,whereArgs);//执行删除

   ②,

String sql = "delete from stu_dbwhere username='Michael'";//删除操作的SQL语句
db.execSQL(sql);//执行删除操作

数据修改
   ①,

ContentValues cv = new ContentValues();//实例化ContentValues
cv.put("password","12345678");//添加要更改的字段及内容
String whereClause = "username=?";//修改条件
String[] whereArgs = {"Michael"};//修改条件的参数
db.update("stu_db",cv,whereClause,whereArgs);//执行修改

   ②,

String sql = "update [user] set password = '12345678' where username='Michael'";//修改的SQL语句
db.execSQL(sql);//执行修改

数据查询
   ①,利用游标Cursor使用query来实现查询非常方便。游标Cursor的具体使用可以参照有关文档,里面的方法都比较简单易懂

public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
//table:表名称
//colums:列名称数组
//selection:条件子句,相当于where
//selectionArgs:条件语句的参数数组
//groupBy:分组
//having:分组条件
//orderBy:排序类
//limit:分页查询的限制
//Cursor:返回值,相当于结果集ResultSet
/**以上提供了非常多的查询条件,不需要的条件则为null**/

如:

Cursor c = db.query("stu_db",null,null,null,null,null,null);//查询并获得游标
while(c.moveToNext()){
        String username = c.getString(c.getColumnIndex("username");
        String password = c.getString(c.getColumnIndex("password"));
    }
}

   ②,也可以rawQuery实现查询

Cursor c = db.rawQuery("select * from stu_db where username=?",new Stirng[]{"Michael"});
if(c.moveToFirst()) {
    String username = c.getString(c.getColumnIndex("username");
    String password = c.getString(c.getColumnIndex("password"));
}

总结:
以上是Android中关于SQLite的简单使用,可以满足平时开发过程的需要。由上可知,对于增删改查都有多种方法可以达到目的,对于使用哪一种就要看自己的需要了。之前对安卓使用SQLite都不是很熟悉,现在写了这篇文章后已经熟悉很多了,以后开发过程中也方便参考。当然,我也是个安卓初学者,若有哪里写得不够好有错误,欢迎指正!

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bingozhang24/article/details/50775442
个人分类: Android开发
上一篇Spring MVC的基本概念
下一篇Android中SharedPreferences的使用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭