android开发--sqlite数据库

一、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

    

时间: 2024-10-07 06:39:08

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

Android开发SQLite数据库的创建

package com.example.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class PersonSQLiteOpenHelper e

android中SQLite数据库的增删改查

1.数据库帮助类PersonSQLiteOpenHelper package com.wzw.sqllitedemo.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper

Android实现SQLite数据库的增、删、改、查的操作

核心代码DAO类 package com.examp.use_SQLite.dao; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import

Android学习---SQLite数据库的增删改查和事务(transaction)调用

上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代码实现增删查改: 1.创建DB工具类 MyDBHelper.java(创建数据库的操作) package com.amos.android_db; import android.content.Context; import android.database.sqlite.SQLiteDatabas

android操作sqlite数据库及心得

写这篇文章主要是网上的对sqlite的操作太多且太杂,很多时候都不能很好的运用到自己的项目中,结构不清晰,我自己写了一篇适合刚刚接触的人看的操作方法. 近来用android时要将一些数据保存起来,一开始用的是preferences,后来要保存的东西多了,发现用preferences明显不能满足要求了,而且发现用这个的话代码就变得有点乱了,所以才开始学习使用sqlite数据库,一开始以为不就是个数据库么,和平时的mysql啊或者是sqlserver都一样,都很简单的,但后来真正在用的时候才发现困难

android在sqlite数据库的SQLiteOpenHelper中的onUpgrade里判断表是否存在

private boolean tabbleIsExist(String tableName, SQLiteDatabase db) { LogUtils.d("DatabaseHelper", "checking tabbleIsExist " + tableName); boolean result = false; if (tableName == null) { return false; } Cursor cursor = null; try { Stri

Qt for Android 打包 SQLite 数据库

Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面了, QT在打包apk的时候会自动打包这个目录里面的东西进去的  本文用菊子曰发布

android greenDao SQLite数据库操作工具类使用

上一篇介绍了如何建立类生成工程,现在介绍如何使用. 以下是ExampleDaoGenerator工程代码,做了一些修改 /* * Copyright (C) 2011 Markus Junginger, greenrobot (http://greenrobot.de) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in com

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

原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本站广告支持小梦,谢谢!) 建立数据库 增加数据 删除数据 更改数据 查询数据 (注:为了让每个操作都能及时显示在UI上,所以进行了数据绑定.数据绑定会在后面文章专门讲解,先给出数据类Note,代表一个笔记.含有Name 和content  属性.其代码如下:如果不清楚,我会在之后讲解): names