-
Android中文件存储的操作 1.Activity的openFileOutput()方法可以把数据输出到文件中 2.创建的文件保存在/data/data/<package name>/files目录 3.实现过程与在java中保存数据到文件中是一样的 <!-- 在SD卡中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 向SD卡写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>查看全部
-
onCreate(){ DBOpenHelper helper =new DBOpenHelper(MainActivity.this, "stu1.db"); /** * getReadableDatabase()/getWritableDatabase() * 当调用此时,自动调用DBOpenHelper.onCreate()方法,若没有数据库,创建并打开;若有,直接打开 */ //helper.getReadableDatabase();//获取一个只读的数据库,只能查询,不能写入、更新 SQLiteDatabase db=helper.getWritableDatabase();//获取一个可读可写的数据库 //db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy); Cursor c=db.rawQuery("select * from stutb", null); if(c!=null){ String[] cols=c.getColumnNames(); while(c.moveToNext()){ for (String ColumnName : cols) { Log.i("info", c.getString(c.getColumnIndex(ColumnName))); } } c.close(); } db.close(); }查看全部
-
public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context, String name) { super(context, name,null,1); // TODO 自动生成的构造函数存根 } public DBOpenHelper(Context context, String name, CursorFactory factory, int version, DatabaseErrorHandler errorHandler) { super(context, name, factory, version, errorHandler); // TODO 自动生成的构造函数存根 } @Override//首次创建数据库的时候调用,一般用来建库/建表的操作 public void onCreate(SQLiteDatabase db) { // TODO 自动生成的方法存根 db.execSQL("create table if not exists stutb(_id integer primary key autoincrement,name text not null,sex text not null,age integer not null)"); db.execSQL("insert into stutb(name,sex,age)values('张三','女',18)"); } @Override//当数据库的版本发生变化的时候会自动执行 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO 自动生成的方法存根 } }查看全部
-
onCreate{ SQLiteDatabase db=openOrCreateDatabase("stu.db", MODE_PRIVATE, null); db.execSQL("create table if not exists stutb(_id integer primary key autoincrement,name text not null,sex text not null,age integer not null)"); ContentValues values=new ContentValues(); values.put("name", "张三0"); values.put("sex", "男"); values.put("age", 12); long rowId=db.insert("stutb", null, values); //Log.i("TAG", ""+rowId); values.clear(); values.put("sex", "男"); db.update("stutb", values, "_id>?", new String[]{"3"});//将全部id>3的人的性别改成男 db.delete("stutb", "name like ?", new String[]{"%0%"});//删除所有名字中带有0的人 Cursor c=db.query("stutb", null, "_id>?", new String[]{"0"}, null, null, "name"); if(c!=null){ String[] columns=c.getColumnNames(); while(c.moveToNext()){ for(String columnName:columns){ Log.i("TAG", ""+c.getInt(c.getColumnIndex(columnName)));//把所有字段名字查询出来 } } c.close(); }查看全部
-
SharedPreferences查看全部
-
android中的4种存储方式查看全部
-
使用GestureOverlayView进行手势识别 一些常见的xml属性设置查看全部
-
GestureOverlayView 一种用于手势输入的透明覆盖层,可覆盖在其他控件的上方,也可包含其他控件 存在3个监听器接口 GestureOverlayView.OnGestureListener 手势监听器 GestureOverlayView.OnGesturePerformedListener --手势执行监听器 GestureOverlayView.OnGesturingListener --手势执行中监听器查看全部
-
实现SharedPreferences存储步骤: 1.获得SharedPreferences对象 SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(MainActivity.this); 或 SharedPreferences pref=getSharedPreferences("myPref",Mode_PRIVATE); 2.获得SharedPrederences.Editor对象 Editor editor=pred.edit(); 3.通过Editor接口的putXxx方法保存key-value对其中Xxx表示不同的数据类型 editor.putString("name","张三"); editor.putInt("age",30); editor.putLong("time",System,currentTimeMillis()); editor.putBoolean("default",true); 4.通过Editor接口的commit方法保存key-value对 editor.commit(); 笔记附录: 1.附加代码:editor.remove(key); 2.取值: pref.getString("name",""); pref.getInt("age",0);查看全部
-
onGestureListener接口查看全部
-
手势交互过程原理 1.触屏一刹那,出发MotionEvent 2.被OnTouchListener监听,在onTouch()中获得MotionEvent对象 3.GestureDetector转发MotionEvent对象到OnGestureListener 4.OnGestureListener获得该对象查看全部
-
使用GestureDetector进行手势识别 MotionEvent 1.用于封装手势、触摸笔、轨迹球等动作事件 2.记录横轴和纵轴坐标的属性X\Y GestureDetecor 识别各种手势 onGestureListener 1.手势交互的监听接口,提供多个抽象方法查看全部
-
Cursor:游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获取列值方法getString()等常用方法: -getCount()总记录条数 -isFirst()判断是否第一条记录 -isLast()判断是否最后一条记录 -moveToFirst()移动到第一条记录 -moveToLast()移动到最后一条记录 -move(int offset)移动到指定记录 -moveToNext()移动到下一条记录 -moveToPrevious()移动到上一条记录 -moveToPosition(int position)移动到指定位置记录 -getColumnIndexOrThrow(String columnName)据列名称获取列索引 -getInt(int columnIndex)获取指定列索引的int类型值 -getString(int columnIndex)获取指定列索引的String类型值 Ps1:每个程序都有自己的数据库,默认情况下是互相不干扰。 Ps2:记住关闭Cursor(while循环之外)和SQLiteDatabase(if判断之外)。查看全部
-
SQLiteDatabase 提供了一些管理SQLite数据库的类 提供创建,删除,执行SQLite命令,并执行数据库管理任务的方法 每个程序的数据库名字是唯一的 db.execSQL(sql)//执行任何SQL语句(查询语句除外,因为返回类型不匹配) db.insert(String table,String nullColumnHack,ContentValues values)//(表名,空列的日志,值) db.delete(String table,String whereClause,String[] whereArgs)//(表名,删除条件,删除条件数组值) db.update(String table,ContentValues values,String whereClause,String[]whereArgs)//(表名,值,更新条件,更新的条件数组) db.query(String table,String[]Columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit)//(表名,查询的列,位置条件,与selection拼成条件,分组,筛选,排序,分页限制)(查询) db.rawQuery(sql,selecionArgs)(查询) SQLiteOpenHelper Ps:如果String whereClause(String selection)写得比较完整,则String[] whereArgs(String selectionArgs)可置为null。查看全部
-
SQLite特点主要包括: 1、轻量级 一个动态库、单文件 2、独立性 没有依赖、无须安装 3、隔离性 全部在一个文件夹中 4、跨平台 支持众多操作系统 5、多语言接口 支持众多编程语言 6、安全性 事务 --关于事务处理的安全性: -通过数据库上的独占性和共享锁来实现独立事务处理。 -多个进程可以同一时间从同一个数据库读取数据,但只有一个可以写入数据。 SQLite的数据类型:【重点】 -SQLite支持NULL、INTEGER、REAL、TEXT、BLOB数据类型。 -依次代表:空值、整型值,浮点值,字符串值,二进制对象。 动态数据类型(弱引用) -当某个值插入到数据库时,SQLite会检查他的数据类型,如果该类型与关联的列类型不匹配,SQLite就会尝试将该值转换成该列的类型,如果不能转换,该值将作为本身的类型存储。【Ps:写入数据库或读取数据库,类型能转则转,不能则系统规定默认型代替!】 使用须知: -由于资源占用少、性能良好和零管理成本,嵌入式数据库有了他的用武之地。例如Android、IOS。 -没有可用于SQLite的网络服务器、只能通过网络共享可能存在文件锁定或者性能问题。 -只提供数据库级的锁定。 -没有用户账户概念,而是根据文件系统确定所有数据库的权限。查看全部
举报
0/150
提交
取消