官方文档:https://developer.android.com/training/basics/data-storage/databases.html#WriteDbRow


原帖:http://sunzone.iteye.com/blog/1876902

查询数据库: 
两种方式-- 
第一种方式:类似INSERT UPDATE DELETE,有两种方法使用select 从SQLite数据库检索数据。 
使用rawQuery()直接调用select 语句,使用query() 方法构建一个查询。

小贴士: 
* onCreate(); 该方法在数据库第一次创建的时候调用,只调用一次; 
* onUpgrade(); 该方法在数据库版本更新的时候调用; 
* T-SQL: 国际标准机制 
DDL:数据定义语言:create drop alter; 
DCL: 数据控制语言:grant revoke; 
DML: 数据管理语言:insert delete update select ; 
* select 列的列表 from  表的列表 where 条件语句 group by 分组属性 having 分组条件 order by 排序列 asc|desc limit m, n; 
* 游标:游标的实质使一种能从包括多条数据记录的结果集种每次提取一条记录的机制;

游标的使用,Cursor的方法: 
* close(); 关闭游标 ,释放资源; 
* copyStringToBuffer(int columnIndex,CharArrayBuffer buffer); 在缓冲区中检索请求的列的文本,将其存储; 
* getColumnCount(); 返回所有列的行数; 
* getColumnIndex(String columnName); 返回指定的列,如果不存在那么返回-1; 
* getColumnIndexOrThrow(String columnName);从0开始返回指定列的名称,如果不存在将抛出异常; 
* getColumnName(int columnIndex); 从给定的索引返回列名; 
* getColumnNames(); 返回一个字符串数组的列名; 
* moveToFirst(); 将游标移动到第一条; 
* moveToLast(); 将游标移动到最后一条; 
* move(int offset); 将游标移动到指定ID; 
* moveToNext(); 将游标移动到下一条; 
* moveToPrevious(); 将游标移动到上一条; 
* getCount(); 得到游标总记录条数; 
* isFirst(); 判断当前游标是否为第一条数据;

案例:创建一个数据库,并在数据库第一次创建的时候初始化创建一张表student,添加记录, 
然后查询数据库种表的数据,显示出来; 

java代码如下: 

/* 查询数据库 *//* 返回一个游标对象 */
public Cursor selectData(){
/* 与数据库获得连接,获得只读属性 */
SQLiteDatabase sqliteDatabase = dbhelper.getReadableDatabase();

/* 使用游标保存得到的结果集 *//* 参1:查询语句 ; 参2:查询条件 */
//Cursor cursor = sqliteDatabase.rawQuery("select * from student", null);

/* 使用查询语句:方式二
* @ distinct --是否去除重复行 例:值为:true/false;
* @ table --表名
* @ columns --要查询的列 例: new String[]{"id","name","age"}
* @ selection --查询条件 例:"id>?"
* @ selectionArgs --查询条件的参数 例:new String[]{"3"}
* @ groupBy --对查询的结果进行分组
* @ having --对分组的结果进行限制
* @ orderby --对查询的结果进行排序; 例:"age asc"
* @ limit --分页查询限制 ; 例:"2,5" 从第2行开始,到第5行结束;注:行数从0 开始;
* */
Cursor cursor = sqliteDatabase.query(true,"student", new String[]{"_id","name","age"}, "_id>?", new String[]{"1"}, null, null, "age desc", "1,5");

/* 使用游标---获取游标中的数据 */
while(cursor.moveToNext()){
String id = cursor.getString(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String age = cursor.getString(cursor.getColumnIndex("age"));
Toast.makeText(MainActivity.this, "_id="+id+" name="+name+" age="+age, 1000).show();
}

return cursor;

}

Android 数据库的更多相关文章

  1. 深入解析Sqlite的完美替代者,android数据库新王者——Realm

    写在前面: 又到一年一度七夕虐狗节,看着大家忍受着各种朋友圈和QQ空间还有现实生活中的轮番轰炸,我实在不忍心再在这里给大家补刀,所以我觉得今天不虐狗,继续给大家分享有用的. 如果你比较关心androi ...

  2. [Android Pro] 完美Android Cursor使用例子(Android数据库操作)

    reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...

  3. Android 数据库框架OrmLite的使用(一)

    在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...

  4. Android数据库升级

    随着Android应用版本的迭代,经常遇到数据库表结构发生改变,或者一些指定的表数据需要更新.这也就引出一个问题Android数据库的更新问题. Android数据库升级分类 Android数据库更新 ...

  5. 优雅的处理Android数据库升级的问题

    原始完成于:2015-04-27 19:28:22 提供一种思路,优雅的处理Android数据库升级的问题,直接上代码: 1 package com.example.databaseissuetest ...

  6. Android数据库之SQLite数据库

    Android数据库之SQLite数据库 导出查看数据库文件 在android中,为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的,数据库位于Android设备/data/data ...

  7. Android 数据库读取数据显示 [5]

    2016-12-1 课程内容 昨天学了Android数据库升级.降级.创建 今天把数据库表里面的数据读取出来显示到手机屏幕上 下面代码是MainActivity.java 的代码 package co ...

  8. Android数据库信息显示在listview上

    Key Points: 1.使用SimpleCursorAdapter将Android数据库信息显示在listview上 adapter = new SimpleCursorAdapter(this, ...

  9. android数据库持久化框架

    android数据库持久化框架

  10. Android数据库高手秘籍(一)——SQLite命令

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/38461239 要想熟练地操作不论什么一个数据库.最最主要的要求就是要懂SQL语言, ...

随机推荐

  1. ArrayList经典Demo

    import java.util.ArrayList; import java.util.Iterator; public class ArrayListDemo { public static vo ...

  2. 当ECharts碰到TWaver

    百度公司的ECharts发展迅速,已经成为HTML5 Chart的佼佼者,这让大家骄傲:中国人终于也有世界级的开源通用UI产品了.正如其网站所说,它是百度的,是中国的,也是世界的.想想那些年,我们追逐 ...

  3. ios xmpp 发送语音图片解决方案

    ios xmpp 发送语音,图片解决方案,有需要的朋友可以参考下. 目前做IM多是用的xmpp. 因为项目需求需要实现语音和图片的发送. 发送语音图片有三种方法. 1,xmpp smack.文件传输方 ...

  4. linux网络编程——域名转换 gethostbyname与gethostbyaddr

    域名转换 #include <netdb.h> struct hostent *gethostbyname(const char *name); 参数: name: 执行主机名的指针 返回 ...

  5. Word2Vec的基本使用

    目录 1.建立模型 2.保存与加载模型 3.使用模型 gensim 是 Python 中一款强大的 自然语言处理工具,它包含了常见的模型,其中便有 Word2Vec 这一优秀的 词向量训练工具,可以使 ...

  6. BNUOJ 17286 Dollars

    Dollars Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID: 1 ...

  7. URAL 1108 简单的树形dp背包问题

    题目大意: 一颗苹果树上,每条边都对应了一个权值,最后留下包括root : 1在的含有 m 条边的子树 , 希望留下的子树中权值之和最大 这里保留m条边,我们可以看作是保留了 m + 1 个点 令dp ...

  8. SGU - 321 - The Spy Network

    先上题目: 321. The Spy Network Time limit per test: 0.5 second(s)Memory limit: 65536 kilobytes input: st ...

  9. HDU——4738 Caocao's Bridges

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  10. - > 动规讲解基础讲解七——最长单增子序列

    (LIS Longest Increasing Subsequence)给定一个数列,从中删掉任意若干项剩余的序列叫做它的一个子序列,求它的最长的子序列,满足子序列中的元素是单调递增的. 例如给定序列 ...