首页 > 学院 > 开发设计 > 正文

SQLite数据库存储

2019-11-07 23:28:35
字体:
来源:转载
供稿:网友

我们先讲解数据库的创建。

在android中我们通常会用到SQLiteOpenHelper来建立数据库,因为他书写简单,并且可以快速的升级数据库的版本。 下面我们对SQLiteOpenHelper进行一一解答:

创建一个数据库:

继承SQLiteOpenHelper

public class MySQLiteOpenHelper extends SQLiteOpenHelper { //这里的bank是数据库的表名;而"banke.db"是整个数据库的文件名; PRivate static final String sql = "create table bank(id integer primary key autoincrement ,name varchar , money integer)"; private static final String TAG = MySQLiteOpenHelper.class.getSimpleName(); public MySQLiteOpenHelper(Context context) { //第二个参数是数据库文件名; //第三个参数为 factory 游标工厂,null 表示使用默认的工厂; //version 为版本号; super(context, "banke.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { Log.d(TAG, "onCreate: enter"); db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}

下面我们对增删改查四个方法逐个讲解;

sql语句:

增:String sql = "insert into bank (name , money ) values(?,?)"; database.execSQL(sql, new Object[]{"apple", 1800});删:String sql = "delete from bank where name = ?"; database.execSQL(sql, new Object[]{"apple"});改:String sql = "update bank set money = ? where name =?"; database.execSQL(sql,new Object[]{1000,"apple"});查:String sql = "select (money) from bank where name = ?"; Cursor cursor1 = database.rawQuery(sql, new String[]{"apple"});

首先我们讲-增;

使用方法有两种:每次使用时都要得到

MySQLiteOpenHelper mySql = new MySQLiteOpenHelper(this);SQLiteDatabase mDatabase = mySql.getWritableDatabase();//第一种方法:/* insert(String table, String nullColumnHack, ContentValues values); String table 表示是数据表的表名(数据库的文件名不等于数据表的表名这点得弄清楚) String nullColumnHack 当下面的values为null时有效这个参数才有效,表示强行插入null值 ContentValues values */ ContentValues values = new ContentValues(); values.put("name", "apple"); values.put("money", 4999); mDatabase.insert("bank", null, values);//第二种方法://sql语句中的bank时数据库的表名,values(?,?)里面的?号为占位符,这里的结果由execSQL中的new Object[]{}传入; String sql = "insert into bank (name , money ) values(?,?)"; mDatabase.execSQL(sql, new Object[]{"apple", 1800});mDatabase.close();

同样也是两种方法;

MySQLiteOpenHelper mySql = new MySQLiteOpenHelper(this);SQLiteDatabase mDatabase = mySql.getWritableDatabase();//第一种:/* String table 数据表的表名 String[] columns, 要查询出来的列名; String selection, 相当于select语句where 后面的部分,可提供占位符, String[] selectionArgs,为上一个占位符提供参数, String groupBy, String having, String orderBy */Cursor cursor = mDatabase.query("bank", new String[]{"money"}, "name = ?", new String[]{"HUAWEI"}, null, null, null);//第二种://sql中 select 表示要查的内容 from 数据库表 where name = ? "?"号代表占位符; 下面这句话表示查询name为 ?的一整行数据;String sql = "select (money) from bank where name = ?"; Cursor cursor1 = mDatabase.rawQuery(sql, new String[]{"apple"}); while (cursor1.moveToNext()) { //int apple = cursor.getInt(cursor.getColumnIndex("money")); int huawei = cursor1.getInt(cursor1.getColumnIndex("money")); Log.d(TAG, "query: huawei = " + huawei); } cursor.close();mDatabase.close();//如果是要查询整张表那么select语句后面的where部分就不需要了,如下;//查询整张表的所有内容;String sql = "select * from bank";Cursor cursor = database.rawQuery(sql, null);

删除

MySQLiteOpenHelper mySql = new MySQLiteOpenHelper(this); SQLiteDatabase database = mySql.getWritableDatabase();//public int delete(String table, String whereClause, String[] whereArgs) whereClause如果为null表示删除所有 int list = database.delete("bank", "name = ?", new String[]{"HUAWEI"}); //list 表示影响的行数,0表示没有删除成功 Log.d(TAG, "delete: list = " + list); //这里表示删除name为apple的一行数据; String sql = "delete from bank where name = ?"; database.execSQL(sql, new Object[]{"apple"}); //表示删除bank表中的所有数据; String sql = "delete from bank"; database.execSQL(sql, new Object[]{}); database.close();

修改

MySQLiteOpenHelper mySql = new MySQLiteOpenHelper(this); SQLiteDatabase database = mySql.getWritableDatabase();// ContentValues values = new ContentValues();// values.put("money", 55555);// database.update("bank", values, "name = ?", new String[]{"apple"});// 这里是指更新bank表中的name对应的money,where后面也可以指定id或表中对应的其它有的变量,如name; String sql = "update bank set money = ? where name =?"; database.execSQL(sql,new Object[]{1000,"apple"}); database.close();//如果要修改一行的所有数据那么使用update()api会比较省事。// public int update(String table, ContentValues values, String whereClause, String[] whereArgs) //whereClause为null的话表示更新整个表有数据的每一行;database.update("bank", values, "id = ?", new String[]{"这里是所需要修改的行标"});
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表