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)存储 |
BLOB | blob 数据,完全根据它的输入存储 |
亲和类型 | xxxx |
INTEGER | INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT、UNSIGNED BIG INT、INT2、INT8 |
TEXT | CHARACTER(20)、VARCHAR(255)、VARYING CHARACTER(255)、NCHAR(55)、NATIVE CHARACTER(70)、NVARCHAR(100)、CLOB |
REAL | DOUBLE、DOUBLE PRECISION、FLOAT |
NUMERIC | DECIMAL(10,5)、BOOLEAN、DATE、DATETIME |
数据库操作
获取数据库对象
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(); //关闭事物