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. python单元测试-unittest

    python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 1.介绍下unittest的基本使用方法: 1)import unittest 2)定义一个继承自unittes ...

  2. vuex requires a Promise polyfill in this browser.--ie-vue-兼容处理日记

    1.ie9+报错vuex requires a Promise polyfill in this browser. 解决如下: npm install --save-dev -polyfill 修改c ...

  3. selenium+python 安装使用

    一.序言 selenium官网selenium简单教程selenium完整教程python基础教程 二.安装python3 https://www.python.org/downloads/relea ...

  4. 【Django】模板系统

    目录 一.变量 二.过滤器 Filters 2. length 3. filesizeformat 4. slice 5. add 6. first.last 7. join 8. truncatec ...

  5. Python, Django 性能分析工具的使用

    最近接手的 Apache HUE 项目性能出现了问题,线上经常出现响应时间过长或因为时间过长而无法服务等问题.老大让我准备弄个性能分析工具,便于追踪和分析平台当前的瓶颈出现在哪里. 那就搞起吧!先从代 ...

  6. ssm框架的多表查询和增删查改

    必须声明本文章==>http://www.cnblogs.com/zhu520/p/7883273.html 一: 1):我的运行环境 我使用myeclipse(你也可以使用eclipse),t ...

  7. 【Henu ACM Round#16 D】Bear and Two Paths

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先搞一条a到b的路径 a c x3 x4 x5....xn-2 d b 然后第二个人的路径可以这样 c a x3 x4 x5...x ...

  8. WPF通用框架ZFS《项目结构介绍01》_模块介绍

    首页介绍: 下图为项目运行首页图片, 大的结构分为三块: 1.Header首部模块(存放通知组件[全局通知.消息管理 ].扩展模块[皮肤.系统设置.关于作者.退出系统]) 2.Left左侧菜单模块(存 ...

  9. ArcGIS 空间查询一例

    ISpatialFilter spatialFilter = new SpatialFilterClass(); spatialFilter.Geometry = Polygon ;//设置用于筛选几 ...

  10. [Python] Wikipedia Crawler

    import time import urllib import bs4 import requests start_url = "https://en.wikipedia.org/wiki ...