1.sqlite简介
sqlite是一个嵌入式数据库引擎,针对内存等资源有限的设备(如手机、PDA、MP3)提供的一种高效的数据库引擎。它有如下特征:轻量级、独立性、隔离性、跨平台、多语言接口、安全性。sqlite数据库没有服务器进程。所有的内容包含在同一个单文件中。该文件是跨平台的,可以自由复制。基于其自身的先天优势,sqlite在嵌入式领域得到广泛应用。
2.sqlite数据类型
一般数据采用的固定的静态数据类型,而sqlite采用的是动态数据类型,会根据存入值自动判断。sqlite具有以下五种数据类型:
NULL: 这个值为空值
INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.
REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.
TEXT: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改 变格式.
3.sqlite命令行工具的使用
打开或创建数据库
$sqlite3 test.db3
这样就能打开或者创建一个新的数据库文件
$sqlite3 test.db3
sqlite version 3.6.23
Enter ".help" for instructions
Enter sql statements terminated with a ";"
sqlite>
创建表
sqlite>create table Artists (
--->ArtistID INTEGER PRIMARY KEY,
--->ArtistName TEXT);
sqlite 对sql语句大小写不敏感,所以大写小写随便
sqlite>create table CDs (
--->CDID INTEGER PRIMARY KEY,
--->ArtistID INTEGER NOT NULL,
--->Title TEXT NOT NULL,
--->Date TEXT);
表查询
来看看现在这两张表里都有那些内容,执行
sqlite>select * from Artists;
4.Android中使用sqlite
public class DBHelper extends sqliteOpenHelper {
//数据库的属性信息
private final static String DATABASE_NAME = "student_db";
private final static int DATABASE_VERSION = 1;
private final static String TABLE_NAME = "T_student";
//数据库表的字段 默认会有一个_id字段
private final static String FIELE_ID = "_id";
private final static String FIELD_NAME = "name";
//默认的构造方法 用于创建数据库
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//数据库的语句在拼接时要注意空格!
@Override
public void onCreate(sqliteDatabase db) {
// Todo Auto-generated method stub
String sql="CREATE TABLE "+TABLE_NAME+"("+
FIELE_ID+" integer primarykey autoincrement,"+
FIELD_NAME+" text);";
db.execsql(sql);
}
//数据库版本更新时调用
@Override
public void onUpgrade(sqliteDatabase db, int arg1, int arg2) {
// Todo Auto-generated method stub
String sql="DROP TABLE IF EXISTS "+TABLE_NAME;
db.execsql(sql);
onCreate(db);
}
//查询
public Cursor select() {
sqliteDatabase db=this.getReadableDatabase();
Cursor cursor=db.query(TABLE_NAME,null,null,null,null,null,"_id desc");
return cursor;
}
//新增
//返回插入行的id 错误返回-1
public long insert(String name) {
sqliteDatabase db=this.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(FIELD_NAME, name);
long row=db.insert(TABLE_NAME, null, cv);
return row;
}
//删除
//delete(TABLE_NAME, where, whereValue) where:可选的WHERE语句 whereValue取代where中的?占位符
//返回 若传入正确的where语句 则被删除的行数将被返回 若传入null 返回0 若要删除所有行并返回删除的行数 则需要在where语句的地方传入字符串1
public void delete(int id){
sqliteDatabase db=this.getWritableDatabase();
String where=FIELE_ID+"=?";
String[] whereValue={Integer.toString(id)};
db.delete(TABLE_NAME, where, whereValue);
}
//更新
public void update(int id,String name){
sqliteDatabase db=this.getWritableDatabase();
String where=FIELD_NAME+"=?";
String[] whereValue={Integer.toString(id)};
ContentValues cv=new ContentValues();
cv.put(FIELD_NAME, name);
db.update(TABLE_NAME, cv, where, whereValue);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。