一、SQLite简介

Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。SQLite具备下列特点:
  1.轻量级
    使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
  2.独立性
    SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
  3.隔离性
    SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
  4.跨平台
    SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
  5.多语言接口
    SQLite 数据库支持多语言编程接口。
  6.安全性

    SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。

二、数据类型

  SQLite与其他常见的DBMS的最大不同是它对数据类型的支持。其他常见的DBMS通常支持强类型的数据,也就是每一列的类型都必须预先指定,但是SQLite采用的是弱类型的字段。实际上,其内部仅有下列五种存储类型:

  NULL: 表示一个NULL值
  INTEGER: 用来存储一个整数,根据大小可以使用1,2,3,4,6,8位来存储.
  REAL: IEEE 浮点数
  TEXT: 按照字符串来存储
  BLOB: 按照二进制值存储,不做任何改变.
  要注意,这些类型是值本身的属性,而不是列的属性.
  但是为了和其他DBMS(以及SQL标准)兼容,在其create table语句中可以指定列的类型,为此,SQLite有个列相似性的概念(Column Affinity). 列相似性是列的属性,SQLite有以下几种列相似性:
  TEXT: TEXT列使用NULL,TEXT或者BLOB存储任何插入到此列的数据,如果数据是数字,则转换为TEXT.
  NUMERIC: NUMERIC列可以使用任何存储类型,它首先试图将插入的数据转换为REAL或INTEGER型的,如果成功则存储为REAL和INTEGER型,否则不加改变的存入.
  INTEGER:和NUMERIC类似,只是它将可以转换为INTEGER值都转换为INTEGER,如果是REAL型,且没有小数部分,也转为INTEGER
  REAL: 和NUMERIC类型 只是它将可以转换为REAL和INTEGER值都转换为REAL.
  NONE:不做任何改变的尝试.
  SQLite根据create table语句来决定每个列的列相似性.规则如下(大小写均忽略):
  1. 如果数据类型中包括INT,则是INTEGER
  2. 如果数据类型中包括CHAR,CLOB,TEXT则是TEXT
  3. 如果数据类型中包括BLOB,或者没有指定数据类型,则是NONE
  4. 如果数据类型中包括REAL,FLOA或者DOUB,则是REAL
  5. 其余的情况都是NUMERIC

创建android项目,添加类

  

  mess类来构建实体

public class mess {
private String lad;
private String name;
private String messeng;
private String date;
private String Zhang;
private int id;
public String getLad() {
return lad;
}
public void setLad(String lad) {
this.lad = lad;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMesseng() {
return messeng;
}
public void setMesseng(String messeng) {
this.messeng = messeng;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getZhang() {
return Zhang;
}
public void setZhang(String zhang) {
Zhang = zhang;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}

  Openhelp类,先继承SQLiteOpenHelper

public class Openhelp extends SQLiteOpenHelper {
//创建数据库
private static final String DB_NAME="Text.db";
//数据库版本
private static final int version=1;
public Openhelp(Context context) {
super(context,DB_NAME,null,version); }
//创建表
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("hi", "没有数据库,创建数据库");
String sql="create table t_message (id integer primary key,tou varchar(50),userName varchar(50),message varchar(50),datetime varchar(50))"; db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub }
}

  test类,操作,写方法

public class test {
private SQLiteDatabase help; public test(SQLiteDatabase context){
this.help=context;
}
//添加
public void addmess() { ContentValues con=new ContentValues();//实例化ContentValues
con.put("tou",R.drawable.lad);
con.put("userName","少年");
con.put("message","过的怎么样");
con.put("datetime","11-29");
help.insert("t_message",null,con);
}
//删除
public void deletemess(Integer ind) {
String whereClause="id=?";//删除的条件
String[] whereArgs={"1"};//删除的参数
help.delete("t_message", whereClause, whereArgs);//执行删除
}
//修改
public void updatemess(mess me) {
ContentValues con=new ContentValues();//实例化ContentValues
con.put("userName","骚年");//添加要更改的字段及内容
String whereClause="id=?";//修改条件
String[] whereArgs={"1"};//修改条件的参数
help.update("t_message",con, whereClause, whereArgs);//执行修改 }
//查询
public List<mess> find()
{
List<mess> list=new ArrayList<mess>(); Cursor cur=help.query("t_message",null,null,null,null,null,null);//查询并获得游标
if(cur.moveToFirst()){ //判断游标是否为空
for (int i = 0; i <cur.getCount(); i++) {
cur.moveToNext();
mess ss=new mess();//实体类
ss.setLad(cur.getString(cur.getColumnIndex("tou")));
ss.setName(cur.getString(cur.getColumnIndex("userName")));
ss.setMesseng(cur.getString(cur.getColumnIndex("message")));
ss.setDate(cur.getString(cur.getColumnIndex("datetime")));
ss.setId(cur.getInt(cur.getColumnIndex("id")));
list.add(ss);
}
}
help.close();
return list;
} }

  在MainActivity类运行

public class MainActivity extends Activity {  

    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.deng);
Openhelp help=new Openhelp(MainActivity.this);
SQLiteDatabase base=help.getWritableDatabase();
test st=new test(base);
st.addmess();//运行的方法,增,删,改

  在执行完上面的代码后,系统就会在/data/data/[PACKAGE_NAME]/databases目录下生成一个“test.db”的数据库文件,如图:

 

 查看方式:打开cmd,找到安装目录如我的 E:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools

    

android开发--sqlite数据库的更多相关文章

  1. Android开发 ---SQLite数据库,lock文件,结果集游标,适配器,安全退出,给连接设置下划线,编辑器,投影,ContentValues存储,DbHelper,activity栈

    目录截图: 1.activity_main.xml 主界面效果: <?xml version="1.0" encoding="utf-8"?> &l ...

  2. Android开发SQLite数据库的创建

    package com.example.db; import android.content.Context; import android.database.sqlite.SQLiteDatabas ...

  3. Android开发 SQLite数据库应用笔记(一)

    注意: 1.public Cursor rawQuery(String sql, String[] selectionArgs) Cursor游标是查询后返回的结果集合,游标的意思是指向集合中的某行. ...

  4. Android实现SQLite数据库联系人列表

    Android实现SQLite数据库联系人列表 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个通讯录查看程序: 要求使用SQLite ...

  5. Qt for Android 打包 SQLite 数据库

    Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面 ...

  6. windows phone 8.1开发SQlite数据库引用安装

    原文出自:http://www.bcmeng.com/windows-phone-sqlite/ windows phone 8.1开发SQlite数据库引用安装 第一步: 安装SQlite forw ...

  7. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

  8. Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库

    下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...

  9. android中sqlite数据库的基本使用和添加多张表

    看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大 ...

随机推荐

  1. 一般处理程序上传文件(html表单上传、aspx页面上传)

    html 表单上传文件        一般处理程序由于没有 apsx 页面的整个模型和控件的创建周期,而比较有效率.这里写一个用 html 表单进行文件上传的示例.        1. 表单元素选用 ...

  2. .net framework 3.5 序列化

    1.JSON序列化. 首先,引用程序集 System.Runtime.Serialization, 我们要使用System.Runtime.Serialization.Json,默认点不出来,这应该是 ...

  3. logrotate机制与原理[转载]

    http://blog.lightxue.com/how-logrotate-works/ 日志实在是太有用了,它记录了程序运行时各种信息.通过日志可以分析用户行为,记录运行轨迹,查找程序问题.可惜磁 ...

  4. Sql Server Analysis Service 转换为UnknownMember的正确设置 (转载)

    转载: http://www.cnblogs.com/OpenCoder/p/4754447.html#commentform 在SSAS中事实表数据被归类到为UnknownMember 的时候分为两 ...

  5. SPI总线协议及SPI时序图详解

    SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚 ...

  6. OS X Yosemite Beta体验

    自从看到Yosemite泄露图的那天起,就暗暗下决心,一定要坚守Mavericks阵营,坚决不升级,觉得新版系统界面简直其丑无比,结果过了没多久,就按耐不住了,在Windows下的虚拟机里面看了看,发 ...

  7. Java中的队列Queue,优先级队列PriorityQueue

    队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...

  8. office2016与visio2016不能“并存”的问题分析

    现象: 先安装了office2016专业增强版,再安装visio2016时出现提示 搜集了相关资料,可以通俗的理解为:已经安装了离线客户端版的office后,不能再安装在线版visio. 之后,将of ...

  9. js点击后将文字复制到剪贴板,将图片复制到剪贴板

    复制文字: <table width="99%" border="0" cellpadding="0" cellspacing=&qu ...

  10. HBase设计与开发性能优化(转)

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客. 1. 表的设计 1.1 Pr ...