Android SQList 数据库

SQList 数据库




创建数据库类

新建类-继承-SQLiteOpenHelper

package cn.lx.itoc;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class itoc_SQLite extends SQLiteOpenHelper {

    public itoc_SQLite(Context context){ //没有数据库时会执行的函数->创建数据库
        super(context, "itoc.db", null, 5);
    }

    @Override
    public void onCreate(SQLiteDatabase db){ //用户初次使用软件时生成数据库,一旦数据库存在则不会调用此方法
        db.execSQL("create table itoc_event(eid INTEGER primary key, Create_time TEXT, detailed BLOB, Title TEXT, Content TEXT, Reminder_time TEXT, Level INTEGER, State INTEGER)");  //建表 itoc_event
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2){
        //版本更新时执行 用于修改数据库表构造(用于版本更新)(增加列:alter table 表名 add 列名 类型)
    }
}
关键字x
primary key主键
autoincrement自动增长
数据类型xx
基本类xxx
INTEGER带符号的整数,根据值的大小存储在1/2/3/4/6/8字节中(主键时自动增长)
REAL浮点值,存储为 8 字节的 IEEE 浮点数字
TEXT文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储
BLOBblob 数据,完全根据它的输入存储
亲和类型xxxx
INTEGERINT、TINYINT、SMALLINT、MEDIUMINT、BIGINT、UNSIGNED BIG INT、INT2、INT8
TEXTCHARACTER(20)、VARCHAR(255)、VARYING CHARACTER(255)、NCHAR(55)、NATIVE CHARACTER(70)、NVARCHAR(100)、CLOB
REALDOUBLE、DOUBLE PRECISION、FLOAT
NUMERICDECIMAL(10,5)、BOOLEAN、DATE、DATETIME

更多可见 http://www.runoob.com/sqlite/sqlite-data-types.html







数据库操作




获取数据库对象

itoc_SQLite mHelper = new itoc_SQLite(context); // 获取/新建 数据库




查询

        SQLiteDatabase db = mHelper.getReadableDatabase(); //新建 数据库操作对象

        //Cursor cursor = db.rawQuery("SELECT * FROM itoc_event WHERE eType = ?",new String[]{eType+""}); //查询 代码法

        //Cursor cursor = db.query("Chart",  new String[]{"num"}, "name=?",    new String[]{"lx"},   GroupBy, having, "Date ASC","0,10");
        //                                            表名、               要查询的列、            查询条件、               条件参数、                  分组、   过滤条件、  排序升序、从0开始10条数据
        Cursor cursor = db.query("itoc_event",null,"eType = ?",new String[]{eType+""},null,null,"eCreate_time DESC");

        if (cursor == null || cursor.getCount() == 0) { db.close(); return;}  //如果游标为空或行数为0,则关闭操作
        while (cursor.moveToNext()) {   //游标有内容,指向下一行
            sk.EID = cursor.getInt(0); //那一行的第一个
            sk.eType = cursor.getColumnIndex("eType");  //根据列名获取
            sk.eCreate_time = cursor.getString(2); //获取时间格式,需要测试*******************************************************************************************
            sk.eDetailed = cursor.getInt(3)>0?true:false; //获取boolean类型 ,需要测试**********************************************************************************
            sk.eTitle = cursor.getString(4);
        }
        cursor.close();      //关闭游标
        db.close();      //关闭操作




插入

        SQLiteDatabase db = mHelper.getReadableDatabase(); //新建 数据库操作对象

        //db.execSQL("insert into student(num,name,age) values(?,?,?)", new Object[]{"59","lx","21"});

        ContentValues contentValues = new ContentValues(); //数据容器
        contentValues.put("eType", eType);//放入内容
        contentValues.put("eCreate_time", eCreate_time);
        ...

        //                  表名             数据内容
        long dp = db.insert("itoc_event", null, contentValues); //执行插入命令 插入一条数据

        db.close();      //关闭操作

        if(dp == -1) return false;
        return true;
    }




修改

        SQLiteDatabase db = mHelper.getReadableDatabase(); //新建 数据库操作对象

        ContentValues contentValues = new ContentValues();
        contentValues.put("eType", sk.eType);//内容
        contentValues.put("eCreate_time", sk.eCreate_time);
        ...

        //update(String table, ContentValues values, String whereClause, String[] whereArgs)
        //                                      表名             要修改的内容         条件                       条件参数
        int dp = db.update("itoc_event", contentValues, "EID=?", new String[]{sk.EID+""});
        //db.execSQL("update Student set Name='xiaohongxie' where Num = 10“);

        db.close();      //关闭操作

        if(dp>0) return true;
        return false;




删除

        SQLiteDatabase db = mHelper.getReadableDatabase(); //新建 数据库操作对象

        //delete(String table, String whereClause, String[] whereArgs)
        int dp = db.delete("itoc_event", "EID=?", new String[]{EID+""});
        //db.execSQL("DELETE FROM itoc_event where EID=?“, ,new String[]{EID+""});

        db.close();      //关闭操作

        if(dp>0) return true;
        return false;




事务

执行多条语句 只能同时成功 或同时失败

db.beginTransaction(); //开始事物
...//多条语句
db.endTransaction(); //关闭事物
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值