在Android初次的前期学习中的二个小例子(2)
Hello13:SQLite数据库
- SQLite是一个轻量级的关系型数据库,运算速度快,占用资源少,使用非常方便,支持SQL语法标准和数据库事务原则。
- 相对于SharedPreferences使用文件保存数据,SQLite具有处理复杂数据结构的能力。
- SQLite支持五种数据类型:NULL,INTEGER,REAL(浮点数),TEXT(字符串文本)和BLOB(二进制对象)。
- 最大的特点:各种数据类型的数据保存到任何字段中而不用关心字段声明的数据类型,除了声明为主键INTEGER PRIMARY KEY的字段只能够存储64位整数。
- 保存目录为内部存储:data/data/包名/databases下
类名
|
作用
|
描述
|
SQLiteOpenHelper类
|
抽象类
|
通过继承该类,可重写数据库创建OnCreat()与更新onUpdate的方法。
通过子类的对象,可使用方法获得SQLiteDatabase类的对象。
|
SQLiteDatabase类
|
数据库访问类
|
通过该类的对象,可对数据库进行增删改查的操作
|
Cursor
|
游标
|
可以简单理解为指向数据库中某 一个记录的指针
|
public class DBHelper extends SQLiteOpenHelper {public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {super(context, name, null, 1);Log.i("1","初始化完成!"); //后台输出到日志 }//数据库第一次创建时被调用 @Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {sqLiteDatabase.execSQL("CREATE TABLE person(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20))");Log.i("1","新建数据库成功!");}//软件版本号发生改变时调用 @Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {sqLiteDatabase.execSQL("ALTER TABLE person ADD phone VARCHAR(12)");Log.i("1","更新数据库成功!");} }
调用SimpleCursorAdapter游标适配器时,需要数据的主键为“_id”(注意下划线)
public class MainActivity extends Activity {private Context mContext;/** * Content的意思为“上下文”,它是抽象类的基类,我们一般见到的Activity、Service和Application都是ContextImpl类。 * 需要指明的是: Context提供了一个应用的运行环境,在Context的大环境里,应用才可以访问资源,才能完成和其他组件、服务的交互. * 所以:假设在Activity中需要调用时,在类的成员变量中加入mContext,并初始化为Activity的本身this。 */@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = MainActivity.this;DBHelper dbHelper = new DBHelper(mContext,"my_db",null ,1);SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); //onCreate()和onUpgrade()被调用 } }
Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //调用系统相机startActivityForResult(it,Activity.DEFAULT_KEYS_DIALER); //拍照完成后,自动返回Intent给onActivityResult//重写onActivityResult方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {if(requestCode == Activity.RESULT_OK){ //返回结果正常Bundle bundle = data.getExtras(); Bitmap bitmap = (Bitmap) bundle.get("data"); //获取Bitmap img_show.setImageBitmap(bitmap);} }
2.使用资源定位Uri和文件File的操作,把图片保存下来
//打开系统相机 private void openSystemCamrea() {Intent intent = new Intent();intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//原图保存File file = new File(getExternalFilesDir(""),"photo.jpg");Uri uri = Uri.fromFile(file); //file的唯一资源标识符uriintent.putExtra(MediaStore.EXTRA_OUTPUT,uri); //使用intent连接照相机的输出到uristartActivityForResult(intent,1); //调回函数onAtcitivyResult(),requestCode标识该调回 }@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {if(resultCode == RESULT_OK) {switch (requestCode) {case 1://显示图片/*Bitmap bitmap = (Bitmap) data.getExtras().get("data"); //获取返回结果的缩略图mImageView.setImageBitmap(bitmap); //使用ImageView显示位图*///保存图片,由于图片较大,保存在外部存储,路径为storage/emulated/0/Android/data/files下File file = new File(getExternalFilesDir(""), "photo.jpg");Bitmap bitmap = null;try {bitmap = BitmapFactory.decodeStream(new FileInputStream(file));} catch (FileNotFoundException e) {e.printStackTrace();}if (bitmap != null) {mImageView.setImageBitmap(bitmap);}break;}} }
转载于:https://www.cnblogs.com/jdemarryme/p/9292057.html
在Android初次的前期学习中的二个小例子(2)相关推荐
- OpenResty学习中的几个小例子汇总
1.测试lua或是LuaJIT的版本号 如果使用的是标准 Lua,访问 /lua-version 应当返回响应体 Lua 5.1 如果是 LuaJIT 则应当返回类似 LuaJIT 2.0.2 这样的 ...
- 深度学习中的单阶段小目标检测方法综述
随着深度学习的不断发展,目标检测技术逐步从基于传统的手工检测方法向基于深度神经网络的检测方法转变.在众多基于深度学习的目标检测方法中,基于深度学习的单阶段目标检测方法因其网络结构较简单.运行速度较快以 ...
- 说说学习中的那点小焦虑
说到焦虑,成了当下年轻人生活中的标配,感觉自己稍不留神就会被同龄人抛弃,被这个时代淘汰.就像现在的学习.生活,也是各种充斥着无处不在的小焦虑.营销号热衷制造焦虑,然后贩卖焦虑,收获流量和粉丝.也有一部 ...
- 深度学习中benchmark什么意思,例子
在深度学习中,"benchmark"通常指对不同的模型.算法或硬件进行性能测试和比较的过程.具体来说,benchmark可以帮助研究人员确定一个模型或算法的优劣,或者在不同的硬件平 ...
- 华为手机点击android棒棒,华为手机中不为人知的按钮,小功能,大作用,不知道就太浪费了!...
功能1:小红点去除 手机是我们天天上都在接触的,每次打开手机总是会发现很多功能按钮上都有小红点的出现,看着不是很舒服,所以一般情况下都会点击这个小红点看一看,特别是对于有强迫症的朋友来说,有这个小红点 ...
- android 开发零起步学习笔记(二十二):ANDROID应用ACTIVITY、DIALOG、POPWINDOW、TOAST窗口添加机制及源码分析(一)
原文:http://www.cnblogs.com/shanzei/p/4654817.html 第一部分: ANDROID应用ACTIVITY.DIALOG.POPWINDOW.TOAST窗口添加机 ...
- 如何写第一篇论文-深度学习中创新点比较小,但是有效果,可以发(水)论文吗? - 王晋东不在家的回答 - 知乎
作者:王晋东不在家 链接:https://www.zhihu.com/question/528654768/answer/2452424449 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权 ...
- MonoRail学习笔记一:一个小例子
随着微软放出消息,准备发布MVC的框架,各种议论纷至沓来. 以前用java.jsp对它的MVC结构.集中控制印象特别深刻,自从用了.NET后,虽然webform的控件很好用,总感觉有点怪怪的 在网上搜 ...
- 数组对称_对称性应用在物理中的几个小例子
在我刚读物理专业时,看到各类科普书都在或多或少吹嘘爱因斯坦是如何地相信对称性,对称性对物理产生了如何巨大的影响,那时候实在无法理解对称性是如何影响物理学,为什么说有了洛伦兹不变形就有了狭义相对论.在学 ...
最新文章
- 判断线程是否执行完毕_关于线程池你不能不知道的东西
- 我三年开发经验,从字节跳动抖音离职后,原理+实战+视频+源码
- Tomcat源码学习(4)-How Tomcat works(转)
- 查看手机截图的坐标信息
- 图像“位操作”有什么用?
- 运行时常量池_从String的intern()到常量池
- URI和URL的区别(12万访问量)
- java 匿名初始化_Java:双括号初始化 /匿名内部类初始化法
- 突破XXX,冲上Google+
- FPGA丨图像二值化
- 惠普打印机m226dn教程_惠普m226dn说明书
- iOS系统安全学习小结(一)
- 谷歌AI人工智能:我们的原则
- 墨尔本python培训班_墨的解释|墨的意思|汉典“墨”字的基本解释
- SAP FICO 固定资产的四种折旧方式
- 如何删除Mysql注册列表残余文件
- ZCMU - 1601: 卡斯丁狗去挖矿
- C进阶⚡- 05动态内存管理
- 做了一个pichome的windows绿色版,解压即用,方便快速测试。
- [蓝桥杯]最后十天,冲刺进国赛