在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","初始化完成!"); //后台输出到日志
- }
- //数据库第一次创建时被调用
- @Override
- public void onCreate(SQLiteDatabase sqLiteDatabase) {
- sqLiteDatabase.execSQL("CREATE TABLE person(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20))");
- Log.i("1","新建数据库成功!");
- }
- //软件版本号发生改变时调用
- @Override
- public 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。
- */
- @Override
- protected 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的唯一资源标识符uri
- intent.putExtra(MediaStore.EXTRA_OUTPUT,uri); //使用intent连接照相机的输出到uri
- startActivityForResult(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;
- }
- }
- }

在Android初次的前期学习中的二个小例子(2)的更多相关文章
- 在Android初次的前期学习中的十二个小例子(附案例下载)
目录(点击标题即可下载): Hello:使用Intent在两个Activity之间切换 Hello2:实现特定的鼠标点击事件功能 Hello3:点击监听事件集中处理 Hello4:登录注册界面布局 H ...
- 记录Python学习中的几个小问题
记录Python学习中的几个小问题,和C#\JAVA的习惯都不太一样. 1.Django模板中比较两个值是否相等 错误的做法 <option value="{{group.id}}&q ...
- 【Android群英传】学习笔记(二)
在本篇笔记中,小编将记录关于Android Studio使用过程的小技巧 在下面文章为Android Studio 简称As ① 使用Android Studio第一次创建项目等待时间很长? 原因: ...
- Android 学习第3课,小例子
package temperature.convert; import java.util.Scanner; public class Converter { public static void m ...
- JSTL中的fmt标签小例子
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- js中的json的小例子
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- node中的ajax提交小例子
我们看一个HTML5页面中通过AJAX请求的方式获取HTTP服务器返回数据的代码示例.由于我们把服务器的端口指定为1337,并将从端口为80的网站中运行HTML5页面,因此这是一种跨域操作,需要在HT ...
- verilog学习笔记(3)_task/case小例子及其tb
module ex_case `timescale lns/1ns module ex_case( input wire rst_n, input wire sclk, output reg [7:0 ...
- 【学习备份】ajax添加小例子
实现目的:保存模板编号.模板名称到数据库 1.js引用 <script src="../../../../../../../js/jquery-1.10.2.min.js"& ...
随机推荐
- SiteOmat
卡巴斯基实验室高级安全研究员Ido Naor和以色列安全研究员Amihai Neiderman在卡巴斯位于墨西哥坎昆举行的安全分析师峰会期间,就加油站的安全问题展开了全面分析.他们的研究表明,攻击者可 ...
- 前端基础(五):jQuery
jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交互, ...
- 关于POI操作Excel
公共接口Workbook http://poi.apache.org/apidocs/dev/org/apache/poi/ss/usermodel/Workbook.html
- Golang对方法接收者变量的自动“取引用”和“解引用”
原文:https://blog.csdn.net/u014633283/article/details/83826413 --------------------------------------- ...
- RocketMQ原理分析 文章 精选【收集】
一. 推荐文章 1.以下来自OSChina的 mingxungu https://itzones.cn/ RocketMQ运维监控 RocketMQ刷盘策略 RocketMQ消息重试 RocketMQ ...
- linux基础_用户和组的三个文件
1./etc/passwd文件 用户(user)的配置文件,记录用户的各种信息 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell 2./etc/shadow文件 口令 ...
- metal2 里 programmable blending 和image block的区别 语法以及persistent thread group的语法
programmable blending 刚接触这个概念的时候 挺激动的 因为能解决很多管线里面的问题 比如 切一次rt再切回来 为了做read write same rt 有了这个 就不用切啦 可 ...
- 【转】深入理解Spring的两大特征(IOC和AOP)
原文链接:https://blog.csdn.net/gloomy_114/article/details/68946881 众所周知,Spring的核心特性就是IOC和AOP,IOC(Inversi ...
- hivesql中的concat函数,concat_ws函数,concat_group函数之间的区别
一.CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串.使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为 +---- ...
- Windows 7 [Web应用程序项目***已配置为使用IIS。无法访问IIS元数据库,您没有足够的特权访问计算机上的IIS网站]
如下所示,我最近也遇到这个类似的错误(Win7 + IIS7.0),最后如下图解决 系统用户权限问题, 通过管理员运行 即可正常使用.