zoukankan      html  css  js  c++  java
  • 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-20140702sdkplatform-tools

        

  • 相关阅读:
    14组作品的优点与建议
    人月神话读后感1
    [置顶] acm入门
    POJ 3041 Asteroids 【匈牙利算法最小点覆盖】
    acm入门
    【转】acm入门
    POJ 1469 COURSES【匈牙利算法入门 二分图的最大匹配 模板题】
    二分图最大匹配总结【转自kb神】
    POJ 3041 Asteroids (匈牙利算法最小点覆盖)
    POJ 1258 AgriNet (最小生成树入门题目)
  • 原文地址:https://www.cnblogs.com/yuluo123/p/6115109.html
Copyright © 2011-2022 走看看