在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"& ...
随机推荐
- linux——实际工作中如何使用linux
实际工作中,linux系统都不会在我们自己的电脑上,linux系统安装在机房的服务器上,我们操作linux不可能跑到机房去,所以我们需要有一个工具,能在公司通过网络远程连接到机房的linux服务器上 ...
- 【JOISC2012】fish
Description 有 \(n\) 条鱼,第 \(i\) 条鱼的长度为 \(L_i\),颜色是 \(C_i\)(\(C_i\) 只能是 'R','G','B'). 你需要从中挑出至少一条鱼,要求挑 ...
- Java&Selenium自动化测试实现页面元素、页面对象及测试代码分离
一.摘要 本篇博文将介绍自动化测试实现页面元素.页面对象及测试代码分离在自动化框架中的实现 二.解析页面元素定位信息 首先,将页面元素与实际的代码分离,首先我们将页面元素定位信息和定位表达式保存在属性 ...
- webpack Uncaught ReferenceError: Swiper is not defined
一.报错原因:Swiper的JS文件没有加载成功,或者说swiper丢失了依赖(正常操作是:加载后再初始化Swiper) 二.解决方法:在初始化 Swiper 的js文件中导入 Swiper impo ...
- 搜索引擎选择: Elasticsearch与Solr(转载)
原文地址:http://www.cnblogs.com/chowmin/articles/4629220.html 搜索引擎选型调研文档 Elasticsearch简介* Elasticsearch是 ...
- Java实现复制文件或者文件夹
拷贝一个文件的算法比较简单,当然,可以对它进行优化,比如使用缓冲流,提高读写数据的效率等. 话不多说直接上代码 import java.io.*; /** * 实现文件的拷贝 */ public cl ...
- HDU5514——容斥原理&&gcd
题目 链接 有n只青蛙,有m块石头,编号为0-m-1,第i只青蛙每次可以跳$a_i$, 刚开始都在0,问,青蛙总共可以跳到的石头之和为多少.其中$t≤20$,$1≤n≤10^4$,$1≤m≤10^9$ ...
- curl查看http请求消息的时长
1. -X 指定请求方式GET请求curl -X GET http://www.jackyops.com/search?data=123 # -X GET是可选的 POST请求curl -X POS ...
- HDU 6076 - Security Check | 2017 Multi-University Training Contest 4
/* HDU 6076 - Security Check [ DP,二分 ] | 2017 Multi-University Training Contest 4 题意: 给出两个检票序列 A[N], ...
- 图论小专题B
2 树 2.1 树的定义 一个只有\(N-1\)条边,且任意两个点连通的图叫做树.通过这样定义的树往往是一棵无根树,而我们通常会任意选定一个根节点使其变成有根树.有根树可以定义"父亲和儿子& ...