android 五种存储方式——Sqlite
2017-10-20 20:03
246 查看
android的五种存储方式分别是:
1,SharedPreferences
2,file
3,sqlite
4,contentproviter
5,http
1,SQLite是轻量级嵌入式数据库引擎
2,支持 SQL 语言
3,利用很少的内存就有很好的性能
SQLiteOpenHelper
SqliteDBHelper
使用sql语句添加
使用sql语句删除
使用sql语句修改
1,SharedPreferences
2,file
3,sqlite
4,contentproviter
5,http
Sqlite
定义1,SQLite是轻量级嵌入式数据库引擎
2,支持 SQL 语言
3,利用很少的内存就有很好的性能
SQLiteOpenHelper
//创建一个数据库,创建表结构,更新表结构 public class SqliteDBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "test_db";//数据库名字 public static final int VERSION = 1;//数据库版本 public static final String TABLE_NAME = "userinfo";//表名 // 数据库中创建一张表的与语句 public static final String CREATE_BOOK = "create table " + TABLE_NAME + " (" + "id integer primary key autoincrement," + "username text," + "userage integer," + "usersex integer)"; // 重载构造方法 public SqliteDBHelper(Context context) { super(context, DATABASE_NAME, null, VERSION); } //默认构造方法 public SqliteDBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } //默认构造方法 public SqliteDBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) { super(context, name, factory, version, errorHandler); } //数据库第一次被创建时,onCreate()会被调用 @Override public void onCreate(SQLiteDatabase db) { //使用参数db,创建对象 db.execSQL(CREATE_BOOK); } //数据库版本变化时,会调用onUpgrade() @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
SqliteDBHelper
public class SqliteBase { SqliteDBHelper sqliteDBHelper;//SqliteDBHelper实例,用于得到SQLiteDatabase实例,具体操作表结构 SQLiteDatabase sqLiteDatabase;//SQLiteDatabase实例,用于具体操作表数据 //初始化 public void initSql(Context context) { sqliteDBHelper = new SqliteDBHelper(context); sqLiteDatabase = sqliteDBHelper.getReadableDatabase();//可读的 sqLiteDatabase = sqliteDBHelper.getWritableDatabase();//可写的 } //打开某个指定的本地数据库文件 public void openDB(Context context, String DBHath) { String path = context.getDatabasePath(DBHath).getPath();// 获取数据库路径 sqLiteDatabase = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE); } //打开某个指定的本地数据库文件,如果这个数据库文件不存在则创建这个数据库 public void openOrCreateDB(Context context, String DBHath) { String path = context.getDatabasePath(DBHath).getPath();// 获取数据库路径 sqLiteDatabase = SQLiteDatabase.openOrCreateDatabase(path, null, null); int version = sqLiteDatabase.getVersion();//当前数据库版本,如果没有这个数据库,则版本号为0 if (SqliteDBHelper.VERSION != version) { sqLiteDatabase.beginTransaction();// 开始事务 try { if (version == 0) { // 执行我们的onCreate方法 sqliteDBHelper.onCreate(sqLiteDatabase); } else { // 如果我们应用升级了mNewVersion为2,而原版本为1则执行onUpgrade方法 sqliteDBHelper.onUpgrade(sqLiteDatabase, version, SqliteDBHelper.VERSION); } sqLiteDatabase.setVersion(SqliteDBHelper.VERSION);// 设置最新版本 sqLiteDatabase.setTransactionSuccessful();// 设置事务成功 } finally { sqLiteDatabase.endTransaction();// 结束事务 } } sqliteDBHelper.onOpen(sqLiteDatabase); } }
增
public long insert() { ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据 cv.put("username", "aaa");//添加title cv.put("userage", 18); //添加weather cv.put("usersex", 1); //添加context //如果你想插入一条所有字段值都为NULL的记录,必须要指定一个字段名来作为该参数,来告诉数据库,将要插入的这条记录都为NULL值。 //如果是使用NUll的话,这样插入一条完全为NUll的记录,数据库将会报错。 return sqLiteDatabase.insert("userinfo", null, cv);//执行插入操作 }
使用sql语句添加
public void insertBySql() { String sql = "insert into userinfo(username,userage) values (?,?)";//插入操作的SQL语句 Object[] objects = {"bbb", 18}; sqLiteDatabase.execSQL(sql, objects);//执行SQL语句 }
删
public int delete() { String whereClause = "username=?";//删除的条件 String[] whereArgs = {"ccc"};//删除的条件参数 return sqLiteDatabase.delete("userinfo", whereClause, whereArgs);//执行删除 }
使用sql语句删除
public void deleteBySql() { String sql = "delete from userinfo where username='ddd'";//删除操作的SQL语句 sqLiteDatabase.execSQL(sql);//执行删除操作 }
改
public int update() { ContentValues cv = new ContentValues();//实例化ContentValues cv.put("userage", 21);//添加要更改的字段及内容 String whereClause = "username=?";//修改条件 String[] whereArgs = {"aaa"};//修改条件的参数 return sqLiteDatabase.update("userinfo", cv, whereClause, whereArgs);//执行修改 }
使用sql语句修改
public void updateBySql() { String sql = "update userinfo set userage = 1 where username = ? ,usersex = ?";//修改的SQL语句 Object[] whereArgs = {"aaa", 1};//删除的条件参数 sqLiteDatabase.execSQL(sql, whereArgs);//执行修改 }
查
使用sql语句查询public void queryBySql() { Cursor result = sqLiteDatabase.rawQuery("SELECT username,usersex,userage FROM userinfo", null); if (result.moveToFirst()) {//移动到第一行 while (!result.isAfterLast()) {//如果不是最后一行,继续往下执行 String userName = result.getString(0); int userSex = result.getInt(1); int userage = result.getInt(2); result.moveToNext();//移动到下一行 } result.close();//关闭游标 } }
/** * @param sql * @param table 表名称 * @param distinct 指定“true”或“false”表示要不要过滤重复值 * @param selectionArgs 条件语句的参数数组 * @param columns 表示要查询的列所有名称集 * @param selection 表示WHERE之后的条件语句,可以使用占位符 * @param groupBy 指定分组的列名 * @param having 指定分组条件,配合groupBy使用 * @param orderBy 指定排序的列名 * @param limit 指定分页参数 * @return Cursor 返回值,相当于结果集ResultSet */ sqLiteDatabase.rawQuery(String sql, String[]selectionArgs); sqLiteDatabase.query(String table, String[]columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy); sqLiteDatabase.query(String table, String[]columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit); sqLiteDatabase.query(String distinct, String table, String[]columns, String selection, String[]selectionArgs, String groupBy, String having, String orderBy, String limit); //例子 String[] params = {"aaa"}; String[] columns= {"username", "usersex", "userage"}; Cursor cursor = sqLiteDatabase.query("userinfo", columns, "username = ?", params, null, null, null);//查询并获得游标 if (cursor.moveToFirst()) {//判断游标是否为空 for (int i = 0; i < cursor.getCount(); i++) { cursor.move(i);//移动到指定记录 String username = cursor.getString(cursor.getColumnIndex("username"); int userage= cursor.getInt(cursor.getColumnIndex("userage")); } } return cursor; // Cursor.move( int offset); //以当前位置为参考,移动到指定行 // Cursor.moveToFirst(); //移动到第一行 // Cursor.moveToLast(); //移动到最后一行 // Cursor.moveToPosition( int position); //移动到指定行 // Cursor.moveToPrevious(); //移动到前一行 // Cursor.moveToNext(); //移动到下一行 // Cursor.isFirst(); //是否指向第一条 // Cursor.isLast(); //是否指向最后一条 // Cursor.isBeforeFirst(); //是否指向第一条之前 // Cursor.isAfterLast(); //是否指向最后一条之后 // Cursor.isNull( int columnIndex); //指定列是否为空(列基数为0) // Cursor.isClosed(); //游标是否已关闭 // Cursor.getCount(); //总数据项数 // Cursor.getPosition(); //返回当前游标所指向的行数 // Cursor.getColumnIndex(String columnName);//返回某列名对应的列索引值 // Cursor.getString( int columnIndex); //返回当前行指定列的值
Android sqlite3数据库管理工具 Android SDK的tools目录下提供了一个sqlite3.exe工具,这是一个简单的sqlite数据库管理工具。开发者可以方便的使用其对sqlite数据库进行命令行的操作。 程序运行生成的*.db文件一般位于"/data/data/项目名(包括所处包名)/databases/*.db",因此要对数据库文件进行操作需要先找到数据库文件: 1、进入shell 命令 adb shell 2、找到数据库文件 #cd data/data #ls --列出所有项目 #cd project_name --进入所需项目名 #cd databases #ls --列出现寸的数据库文件 3、进入数据库 #sqlite3 test_db --进入所需数据库 会出现类似如下字样: SQLite version 3.6.22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> 至此,可对数据库进行sql操作。 4、sqlite常用命令 >.databases --产看当前数据库 >.tables --查看当前数据库中的表 >.help --sqlite3帮助 >.schema --各个表的生成语句
相关文章推荐
- android五种数据存储方式
- Android四种存储方式 sharedpreference,file,SQlite,contentprovider实现增删改查
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览
- Android四种存储方式: sharedpreference,file,SQlite,contentprovider实现增删改查
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
- Android五种数据存储方式
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android中的五种数据存储方式
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
- 专题一====Android五种数据存储方式
- Android数据存储五种方式总结
- Android数据存储方式:SharePreference、SQLite、ContentProvider有什么不同?
- Android的五大存储方式:SharedPreferences、内部存储、外部存储、SQLite和网络存储
- android的基础学习:SQLite存储方式以及数据库操作
- Android中常用的五种数据存储方式
- Android四种存储方式 sharedpreference,file,SQlite,contentprovider实现增删改查
- Android数据存储五种方式总结
- Android的五种存储方式