SQLite是一款轻量级数据库,集成于android中,以下从分享一下自己学习的。

在查阅资料时有一些好的说明就直接用了:

主要的curd语句

以下SQL语句获取5条记录,跳过前面3条记录
select * from Account limit 5 offset 3 或者 select * from Account limit 3,5
插入语句:insert into 表名(字段列表) values(值列表)。如: insert into person(name, age) values(‘atm’,3)
更新语句:update 表名 set 字段名=值 where 条件子句。如:update person set name=‘atm‘ where id=1
删除语句:delete from 表名 where 条件子句。 如:delete from person where id=1

getWritableDatabase()和getReadableDatabase()的差别

getWritableDatabase()和getReadableDatabase()方法都能够获取一个用于操作数据库的SQLiteDatabase实例。

但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就仅仅能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,假设数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以仅仅读方式打开数据库。

注意:getWritableDatabase(),getReadableDatabase的差别是当数据库写满时,调用前者会报错,调用后者不会。所以假设不是更新数据库的话,最好调用后者来获得数据库连接。 

Cursor的简单说明

无论你怎样运行查询,都会返回一个 Cursor,这是 Android 的 SQLite 数据库游标,使用游标,你能够:
通过使用 getCount() 方法得到结果集中有多少记录。
通过 moveToFirst(), moveToNext(), 和 isAfterLast() 方法遍历全部记录;
通过 getColumnNames() 得到字段名;
通过 getColumnIndex() 转换成字段号;
通过 getString(),getInt() 等方法得到给定字段当前记录的值;
通过 requery() 方法又一次运行查询得到游标;
通过 close() 方法释放游标资源;
提示:数据库中读取到的数据在cursor中。在写入到对象中时。要先推断cursor中是否有数据,否则当查询结果为空集时会报错。

推断cursor为空时。不能够用cursor==null,及时cursor中没有数据,cursor也不为空。

须要用cursor.getCount()函数来推断是否为空,结果为0时为空。

具体的代码:

首先:怎样创建数据库

创建数据库和表。

数据库的默认保存路径为:“data/data/com.example.SqliteTest/databases/”

com.example.SqliteTest就是自己的project

public class DBOpenHelp extends SQLiteOpenHelper {
public DBOpenHelp(Context context) { super(context, "User_atm.db", null, 1);
// TODO Auto-generated constructor stub
} @Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
StringBuilder strSql = new StringBuilder();
strSql.append("CREATE TABLE IF NOT EXISTS user_info (");
strSql.append("user_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,");
strSql.append("user_age INT NOT NULL,");
strSql.append("user_name VARCHAR(50) NOT NULL)");
db.execSQL(strSql.toString());
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//数据库改动是在这里操作。比方添加表字段
}

以下是增删改查以及事务的代码:

public class ServiceTest {

    //增删改查

    //得到数据库

    DBOpenHelp dbOpenHelp;

    public ServiceTest(Context context) {
super();
this.dbOpenHelp = new DBOpenHelp(context);
} //启动事务
public void TransactionTest(){
SQLiteDatabase db = dbOpenHelp.getWritableDatabase();
db.beginTransaction();
try{
db.execSQL("update User_info set user_age=user_age+1 where user_id=10");
db.execSQL("update User_info set user_age=user_age-1 where user_id=11");
db.setTransactionSuccessful();
}finally{
db.endTransaction();}
} //增
public void save(UserInfo userinfo){
SQLiteDatabase db = dbOpenHelp.getWritableDatabase();
db.execSQL("insert into user_info(user_id, user_age, user_name) values(?,?,? )",
new Object[]{userinfo.getUser_id(),userinfo.getUser_age(), userinfo.getUser_name()}); } //删 public void delete(Integer user_id){
SQLiteDatabase db = dbOpenHelp.getWritableDatabase();
db.execSQL("delete from user_info where user_id=? ", new Object[]{user_id}); } //改动
public void update(UserInfo userinfo){
SQLiteDatabase db = dbOpenHelp.getWritableDatabase();
db.execSQL("update user_info set user_age=?,user_name=? where user_id=?",
new Object[]{userinfo.getUser_age(), userinfo.getUser_name(),userinfo.getUser_id()});
} //查询
public UserInfo find(Integer id){
SQLiteDatabase db = dbOpenHelp.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from user_info where user_id=? ", new String[]{id.toString()});
if(cursor.moveToFirst()){
int user_id = cursor.getInt(cursor.getColumnIndex("user_id"));
int user_age = cursor.getInt(cursor.getColumnIndex("user_age"));
String user_name = cursor.getString(cursor.getColumnIndex("user_name"));
return new UserInfo(user_id, user_name, user_age);
}
cursor.close();
return null;
}
}

可视化的数据库管理工具–SQLite Expert Professional

自己能够在网上下载。

下载后打开软件,进入主界面:

上图中红色框部分为导入和删除数据库。

上图中为新建表。

还有非常多功能,能够在改动完后,从新导入到设备中(最開始到处的路径)。

通过cmd查看数据库

打开制定路径下的数据库

简单的数据库操作。查询一张表。

SQLite触发器:android:SQLite–触发器具体解释

SQLite基础学习的更多相关文章

  1. SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念

    SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...

  2. 零基础学习openstack【完整中级篇】及openstack资源汇总

    1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事 ...

  3. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  4. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  5. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  6. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  7. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  8. python入门到精通[二]:基础学习(1)

    摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...

  9. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

随机推荐

  1. java关于File.separator

    写好代码在模拟环境下测试,完全没问 题:但linux+tomcat下用的时候,却老是报告“No such file or diretory ”的异常,上传不了.后来发现是文件路径的问题.我的模拟测试环 ...

  2. Windows系统的关机、休眠和睡眠状态究的区别

    原文:Windows系统的关机.休眠和睡眠状态究的区别 相信有些小伙伴跟我一样,对电脑的一些常用操作或名词不太熟悉,今天我们就简单来聊聊电脑的关机.休眠和睡眠状态究竟有何区别吧! 如果你在电脑左下角的 ...

  3. UINavigationController导航栏按钮设置

    UINavigationController常见属性 1.一般情况下,导航栏上面显示什么内容,由当前栈顶控制器的navigationItem属性决定 * navigationItem.title : ...

  4. 03012_预处理对象executeQuery方法(实现数据库的查询)

    1.概述 (1)通过预处理对象的executeQuery方法,完成记录的select语句的执行: (2)操作格式统一如下: ①注册驱动: ②获取连接: ③获取预处理对象: ④SQL语句占位符设置实际参 ...

  5. SQL脚本存在TABLE ACCESS FULL行为

    对于SQL的执行计划,一般尽量避免TABLE ACCESS FULL的出现,那怎样去定位,系统里面哪些SQL脚本存在TABLE ACCESS FULL行为,对于9i及以后版本,使用以下语句即可 sel ...

  6. PDF Adobe Acrobat 9 简体中文专业版(打印店内部的软件)(你懂的!)

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  7. js全局的解析与执行过程

    先看下面实例的执行结果: alert(a);//undefined alert(b);//报错 alert(f);//输出f函数字符串 alert(g);//undefined var a = 1; ...

  8. 深入理解Android(3)——Eclipse集成javah和NDK-Builder

    在上一篇文章中我们使用了javah工具来生成了native java文件所对应的C++头文件,但是这样生成比较麻烦,我们这一篇来介绍如何在eclipse中集成javah和NDK-Builder. 一. ...

  9. Fragment-传递参数

    在关Fragment间参数的传递,有两种情况: 第一种情况:同一个container中不同fragment间的参数传递.这种情况一般发生在fragment跳转时,上一个Fragment将参数传递给下一 ...

  10. 网站平台的favicon.ico的logo

        <link rel="shortcut icon" href="http://www.uuop.com/icotemp/2017061703035984/f ...