Android SQLite数据库操作.docx
- 文档编号:3426532
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:23
- 大小:22.17KB
Android SQLite数据库操作.docx
《Android SQLite数据库操作.docx》由会员分享,可在线阅读,更多相关《Android SQLite数据库操作.docx(23页珍藏版)》请在冰豆网上搜索。
AndroidSQLite数据库操作
AndroidSQLite数据库操作
packagecom.example.sqlitedemo.db;
importandroid.content.Context;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteOpenHelper;
importandroid.util.Log;
//数据库帮助类 用于数据库的创建和管理
//用于创建链接数据库
publicclassPersonSQLiteOpenHelperextendsSQLiteOpenHelper{
privatestaticfinalStringTGA="PersonSQLiteOpenHelper";
//数据库的构造方法
//context上下文Activity
//name 数据库名称
//factory 游标工程默认值给空
//version 数据库版本号不能小于1
publicPersonSQLiteOpenHelper(Contextcontext){
super(context,"wkk.db",null,1);
}
//数据库第一次创建时回调此方法
//初始化一些表
publicvoidonCreate(SQLiteDatabasedb){// 连接到数据库
/**
*SQLite的数据类型:
Typelessness(无类型), 可以保存任何类型的数据到你所想要保存的任何表的任何列中.
* 但它又支持常见的类型比如:
NULL(空),VARCHAR(char),TEXT(文本),INTEGER(int),BLOB,
*CLOB...等. 唯一的例外:
integerprimarykey 此字段只能存储64位整数
*/
//操作数据库
//createtableperson(_idintegerprimarykey,namevarchar(20)/*长度不起作用
//定义20 存100位也可以*/,ageinteger)
Stringsql="createtableperson(_idintegerprimarykey,namevarchar(20),ageinteger)";
db.execSQL(sql);
//取得对象之后可以直接用下面的方法对数据库执行操作
//db.insert(table,nullColumnHack,values)
//insert() 增加数据
//delete() 删除数据
//update() 修改数据
//query() 查询数据
//也可以这样写
//db.execSQL("createtableperson(_idintegerprimarykeyautoincremnet,namevarchar(20),ageinteger");
}
//数据库的版本号更新时回调此方法
//更新数据库的内容(删除,添加,修改表)
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){//传入旧版本号 新报本号
if(oldVersion==1&&newVersion==2){//如果 旧版本号为1且新版本号为2时 执行的方法
Log.i(TGA,"数据库更新");
db.execSQL("altertablepersonaddbalanceinteger");//person表中添加一列 列名为 balance(余额)
}elseif(oldVersion==2&&newVersion==3){
}elseif(oldVersion==3&&newVersion==4){
}
}
}
package com.example.sqlitedemo.entities;
//用于给数据库的各个属性赋值
public classPerson{
private int id;
private String name;
private int age;
public int getId(){
return id;
}
public void setId(int id){
this.id =id;
}
public StringgetName(){
return name;
}
public void setName(Stringname){
this.name =name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age =age;
}
public Person(){
super();
// TODO Auto-generatedconstructorstub
}
public Person(int id,Stringname, int age){
super();
this.id =id;
this.name =name;
this.age =age;
}
@Override
public StringtoString(){
return "Person[id="+ id + ",name="+ name+ ",age="+ age+ "]";
}
}
packagecom.example.sqlitedemo.dao;
importjava.util.ArrayList;
importjava.util.List;
importcom.example.sqlitedemo.db.PersonSQLiteOpenHelper;
importcom.example.sqlitedemo.entities.Person;
importandroid.content.Context;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
//用于执行数据库的增删改查操作
publicclassPersonDao{
privatePersonSQLiteOpenHelpermOpenHelper;// 创建一个 数据库的帮助类的对象
publicPersonDao(Contextcontext){// 构造方法当创建的这类的对象时需要传入一个上下文对象
mOpenHelper=newPersonSQLiteOpenHelper(context);//new一个 当创建此类对象时 会初始化
//PersonSQliteOpenHelper类的对象
}
//添加到person表一条数据增
publicvoidinsert(Personperson){
SQLiteDatabasedb=mOpenHelper.getWritableDatabase();// 取出 得到
//SQLiteDatabase对象进行操作
//SQLiteDatabasedb1=mOpenHelper.getReadableDatabase();//只读的对象
//SQLiteDatabasedb2=mOpenHeLper.getWritableDatabase();//可写的对象
if(db.isOpen()){// 如果数据库打开执行添加的操作
//执行添加到数据库的操作
//db.execSQL("insertintoperson(name,age)values('ff',19);");
db.execSQL("insertintoperson(name,age)values(?
?
);",
newObject[]{person.getName(),person.getAge()});//?
占位符
//在后面的Object数组中赋给对应的值
db.close();//数据库关闭
}
}
publicvoiddelete(intid){// 删除
SQLiteDatabasedb=mOpenHelper.getWritableDatabase();// 获得可写的数据库对象
if(db.isOpen()){// 如果数据库打开执行添加的操作
db.execSQL("deletefrompersonwhere_id=?
;",
newInteger[]{id});// 根据id删除相应的数据
db.close();//数据库关闭
}
}
publicvoiddetele(Integer..._ids)// 获得一个不确定长度的Integer型数组 (Integer[]_ids)
{
if(_ids.length>0){
StringBuffersb=newStringBuffer();
for(inti=0;i<_ids.length;i++){
sb.append('?
').append(',');//将 char 参数的字符串表示形式追加到此序列。
}
sb.deleteCharAt(sb.length()-1);// 移除此序列指定位置的char
SQLiteDatabasedb=mOpenHelper.getWritableDatabase();// 将最后个位置的,去掉
db.execSQL("deletefrompersonwhere_idin("+sb+")",
(Object[])_ids);// 将sb中的?
替换为_ids中的具体数字
}
}
publicvoidupdate(intid,Stringname){// 改 修改数据 根据id修改数据
SQLiteDatabasedb=mOpenHelper.getWritableDatabase();
if(db.isOpen()){// 如果数据库打开执行添加的操作
db.execSQL("updatepersonsetname=?
where_id=?
;",
newObject[]{name,id});
db.close();//数据库关闭
}
}
publicList
SQLiteDatabasedb=mOpenHelper.getReadableDatabase();// 获得一个只读的数据库对象
if(db.isOpen()){
//db.execSQL("select*fromperson;");//此方法没有返回值
Cursorcursor=db.rawQuery("select*fromperson;",null);
if(cursor!
=null&&cursor.getCount()>0){//cursor!
=null 是判断cursor这个对象是否为空cursor.getCount()>0判断cursor值是否为空
List
intid;
Stringname;
intage;
while(cursor.moveToNext()){// 如果移动到最后一位返回false
id=cursor.getInt(0);// 取第0列的数据 _id
name=cursor.getString
(1);
age=cursor.getInt
(2);
personList.add(newPerson(id,name,age));// 将数据添加到ArrayList集合中
}
db.close();
returnpersonList;// 返回ArrayList集合
}
db.close();
}
returnnull;
}
/**
* 获取学生信息
*
*@paramstart 起始位置
*@paramcount 学生数量
*@return
*/
publicList
List
SQLiteDatabasedb=mOpenHelper.getWritableDatabase();
Cursorcursor=db.rawQuery("select*frompersonlimit?
?
",
newString[]{String.valueOf(start),String.valueOf(count)});//String.valueOf(start)
//将int型start转化成String型
while(cursor.moveToNext())// 游标下移返回false时结束查询
{//取得信息赋值到ArrayList集合中
students.add(newPerson(
cursor.getInt(cursor.getColumnIndex("_id")),cursor
.getString(cursor.getColumnIndex("name")),cursor
.getShort(cursor.getColumnIndex("age"))));
}/*cursor.getColumnIndex("sid") 返回sid的序列号 */
returnstudents;
}
publicPersonqueryItem(intid){// 根据id查询单条
SQLiteDatabasedb=mOpenHelper.getReadableDatabase();// 获得一个只读的数据库对象
if(db.isOpen()){// 判断数据库是否打开
Cursorcursor=db.rawQuery("select*frompe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android SQLite数据库操作 SQLite 数据库 操作