[认识序数15]活动目标: 1、认识序数1-5,初步了解序数的意义。 2、初步感知序数的顺序数。 3、形成良好的秩序感。 活动准备: 1、教具:跑道,"数字卡片",五种动物图片。 2、"动物与房子",口杯架。...+阅读
sqlite。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
请看sqlite增删改查的例子:
android学习手册,里面有源码。android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳
请教如何读取android手机自带的email数据库的方法
android读取数据库可以使用sqlite一些api进行读取,实例如下:
/** * 查找一条数据 * param uid */ public User find(Integer uid){ SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); //创建数据库辅助类 Cursor cursor =db.rawQuery("select * from user where uid=?", new String[]{uid.toString()}); //创建一个游标 if(cursor.moveToFirst()){ //循环遍历查找数组 int uid2=cursor.getInt(cursor.getColumnIndex("uid")); String uname=cursor.getString(cursor.getColumnIndex("uname")); String uaddress=cursor.getString(cursor.getColumnIndex("uaddress")); User user=new User(); user.setUid(uid2); user.setUname(uname); user.setUaddress(uaddress); return user; } cursor.close(); return null; }
android怎么使用sqlcipher
Android系统内置了SQLite数据库,并且提供了一整套的API用于对数据库进行增删改查操作。数据库存储是我们经常会使用到的一种存储方式,相信大多数朋友对它的使用方法都已经比较熟悉了吧。在Android中,我们既可以使用原生的SQL语句来对数据进行操作,也可以使用Android API提供的CRUD方法来对数据库进行操作,两种方式各有特点,选择使用哪一种就全凭个人喜好了。 不过,使用SQLite来存储数据却存在着一个问题。因为大多数的Android手机都是Root过的,而Root过的手机都可以进入到/data/data//databases目录下面,在这里就可以查看到数据库中存储的所有数据。如果是一般的数据还好,但是当涉及到一些账号密码,或者聊天内容的时候,我们的程序就会面临严重的安全漏洞隐患。那么今天,就让我们一起研究一下如何借助SQLCipher来解决这个安全性问题。
SQLCipher是一个在SQLite基础之上进行扩展的开源数据库,它主要是在SQLite的基础之上增加了数据加密功能,如果我们在项目中使用它来存储数据的话,就可以大大提高程序的安全性。SQLCipher支持很多种不同的平台,这里我们要学习的自然是Android中SQLCipher的用法了。 首先要把Android项目所依赖的SQLCipher工具包下载下来: 接着解压这个工具包,会看到里面有assets和libs这两个目录,稍后需要将这两个目录中的内容添加到Android项目当中。那么现在我们就来新建一个Android项目,项目名就叫SQLCipherTest。观察SQLCipherTest的项目结构,发现里面也分别有一个assets目录和一个libs目录,那么现在就可以把SQLCipher工具包中这两个目录里的内容复制过来。并不需要复制全部文件,选择必要的文件进行复制就可以 到这里准备工作就全部完成了,接下来我们开始编写代码。
首先创建一个MyDatabaseHelper继承自SQLiteOpenHelper,注意这里使用的并不是Android API中的SQLiteOpenHelper,而是net.sqlcipher.database包下的SQLiteOpenHelper,代码如下所示:[java] view plaincopy import android.content.Context; import net.sqlcipher.database.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase.CursorFactory; import net.sqlcipher.database.SQLiteOpenHelper; public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_TABLE = "create table Book(name text, pages integer)"; public MyDatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); } Override public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { } } 除了引入的包不一样了,其它的用法和传统的SQLiteOpenHelper都是完全相同的。
可以看到,我们在onCreate()方法中创建了一张Book表,Book表里有name和pages这两个列。 接着,打开或新建activity_main.xml作为程序的主布局文件,代码如下所示:[html] view plaincopy android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >android:id="+id/add_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="添加数据" />android:id="+id/query_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查询数据" />这里只是简单地放置了两个按钮,分别用于添加和查询数据。接下来打开或新建MainActivity作为程序主Activity,代码如下所示:[java] view plaincopy public class MainActivity extends Activity { private SQLiteDatabase db; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SQLiteDatabase.loadLibs(this); MyDatabaseHelper dbHelper = new MyDatabaseHelper(this, "demo.db", null, 1); db = dbHelper.getWritableDatabase("secret_key"); Button addData = (Button) findViewById(R.id.add_data); Button queryData = (Button) findViewById(R.id.query_data); addData.setOnClickListener(new OnClickListener() { Override public void onClick(View v) { ContentValues values = new ContentValues(); values.put("name", "达芬奇密码"); values.put("pages", 566); db.insert("Book", null, values); } }); queryData.setOnClickListener(new OnClickListener() { Override public void onClick(View v) { Cursor cursor = db.query("Book", null, null, null, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); int pages = cursor.getInt(cursor.getColumnIndex("pages")); Log.d("TAG", "book name is " + name); Log.d("TAG", "book pages is " + pages); } } cursor.close(); } }); } } 可以看到,在...
以下为关联文档:
15个月不和群我家BB15个月了,在外面的时候,他喜欢一个人玩,比他大一点或小一点的都会找他,但他总是躲开,对什么会好奇,但只会在一旁看看.我们基本上每天都有带他出去玩.不知为何出现这种...
疯狂韩语单词151. [名] 先,表示顺序 2. [名] 筷子 3. [名] 餐桌 4. [动] 放下 5. [形] 困难,吃力 6. [副] 慢慢地 7. [副] 端正地 8. [名] 小心 9. [名] 驾驶 10. [形] 急 11. [名] 办公室...
学习15的序数活动内容:数学活动“学习1-5的序数” (一)活动目标: 1、通过一系列的游戏活动,让幼儿认识序数第一至第五。 2、发展幼儿思维的逻辑判断能力。活动准备: 1、创设超市小货架的环境。...
15、争吵15、争吵 教学目标 1.通过理解课文内容,懂得人与人之间要团结友爱,相互宽容。 2.给课文分段,归纳段落大意,说出课文主要内容。 3.学习生字词,练习用“缘故”、“诚心诚意”造句。 4....
15金色的鱼钩15金色的鱼钩(A、B案) 学习目标 1.快速默读课文,了解文章的主要内容,能复述课文。 2.抓住描写老班长的外貌、动作、语言等重点词句,体会老班长忠于革命、舍己为人的精神。 3.认识...
课文15画风课文 15 画风(3篇) 《画风》教学设计一 重庆市渝中区人民路小学 赵睿 学习目标 1.有主动识字的愿望,能认识生字“宋、涛、陈、丹、赵、艺、显”,会正确书写“艺、涛”。 2.分角...
图文15争吵15争吵 重庆市高新区第一实验小学 白正全 学习目标 1.会认“嫉妒”等13个生字。会写“匠替”等14个生字。能够正确读写“石匠抄写”等14个词语。 2.正确而有感情地朗读课文。...
15夏夜多美15 夏夜多美 教学目标 1.认识“莲、哭”等13个生字,会写“她、他”等6个字。 2.正确、流利、有感情地朗读课文。 3.体会助人为乐的精神。 教学重点 有感情地朗读课文,边读边体会...
急求公司15周年庆活动方案公司人员比较小15人左右所以最好能经可以找一个两天一夜的近郊例如温泉类适合轻松玩乐商务会务的度假区之类的地方,公司人数不多,开房间也不会花销太多,然后多租一个小会议室这样的场所,或者如果场地允许也可以考虑...