0
点赞
收藏
分享

微信扫一扫

安卓学习:(6)安卓操作sqlite数据库

zidea 2023-01-09 阅读 98


1.编写DataBaseOpenHelper公共类

package com.smart.service;

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

public class DataBaseOpenHelper extends SQLiteOpenHelper {
// 数据名称,
private static final String DBNAME = "smrtDataBase";
// 数据库版本
private static final int version = 1;

// 构造方法参数,
public DataBaseOpenHelper(Context context) {
super(context, DBNAME, null, version);
}

// 数据库创建表的名子。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE person (personid integer primary key autoincrement,name varchar(20),age INTEGER)");

}

// 更新方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("EROP TABLE IF EXISTS person");
onCreate(db);
}

}

2.编写Person实体类

package com.smart.domain;

public class Person {

@Override
public String toString() {

return "personid=" + personid + ",name=" + name + ",age=" + age;
}

public int personid;
public String name;
public Short age;

public int getPersonid() {
return personid;
}

public void setPersonid(int personid) {
this.personid = personid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

// 增加一个构造器
public Person(int personid, String name, Short age) {
super();
this.personid = personid;
this.name = name;
this.age = age;
}

// 创建构造器
public Person(String name, short age) {
this.name = name;
this.age = age;

}

public Short getAge() {
return age;
}

public void setAge(Short age) {
this.age = age;
}

}

3.编写PersonService类

package com.smart.service;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.smart.domain.Person;

public class PersonService {
/**
* 这里是处理业务的方法,和JAVA叫做实现类 如果用上下文打开数据库,一定要关闭数据库
* */
private DataBaseOpenHelper dbOpenHelper;

public PersonService(Context context) {

dbOpenHelper = new DataBaseOpenHelper(context);
}

public void save(Person person) {
SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
database.execSQL("insert into person(name,age) values(?,?)",
new Object[] { person.getName(), person.getAge() });

// database.close();
}

public void update(Person person) {
SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
database.execSQL(
"update person set name=?,age=? where personid=?",
new Object[] { person.getName(), person.getAge(),
person.getPersonid() });

}

public Person find(Integer id) {
SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
Cursor cursor = database.rawQuery(
"select * from person where personid=?",
new String[] { String.valueOf(id) });
if (cursor.moveToNext()) {
return new Person(cursor.getInt(0), cursor.getString(1),
cursor.getShort(2));

}

return null;
}

public void delete(Integer... ids) {

if (ids.length > 0) {
StringBuilder sb = new StringBuilder();
for (Integer id : ids) {
sb.append("?").append(",");
}
sb.deleteCharAt(sb.length() - 1);
SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
database.execSQL(
"delete from person where personid in(" + sb + ")",
(Object[]) ids);

}

}

// 分页代码
public List<Person> getScrollData(int startResult, int maxResult) {
List<Person> persons = new ArrayList<Person>();
SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
Cursor cursor = database.rawQuery(
"select * from person limit ?,?",
new String[] { String.valueOf(startResult),
String.valueOf(maxResult) });
while (cursor.moveToNext()) {
persons.add(new Person(cursor.getInt(0), cursor.getString(1),
cursor.getShort(2)));
}

return persons;

}

// 取得所有的条数
public long getCount() {
SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
Cursor cursor = database.rawQuery("select * from person ", null);
if (cursor.moveToNext()) {
return cursor.getLong(0);
}
return 0;
}

}



4.编写PersonServiceTest测试类

package com.smart.dh;

import java.util.Iterator;
import java.util.List;

import android.test.AndroidTestCase;
import android.util.Log;

import com.smart.domain.Person;
import com.smart.service.PersonService;

public class PersonServiceTest extends AndroidTestCase {

private static final String TAG = "PersonServiceTest";

// 保存数据。
public void testSave() throws Exception {
PersonService personService = new PersonService(this.getContext());
// personService.save(new Person("老梁",(short)23));
for (int i = 0; i < 10; i++) {
personService.save(new Person("llb" + i, (short) (i + 1)));
}

}

// 查询
public void testFind() throws Exception {
PersonService personService = new PersonService(this.getContext());
Person person = personService.find(1);
Log.i(TAG, person.toString());

// personService.save(new Person("老梁",(short)23));
}

// 更新语句

public void testUpdate() throws Exception {
PersonService personService = new PersonService(this.getContext());
Person person = personService.find(1);
person.setName("smart");
personService.update(person);

Log.i(TAG, person.toString());

}

// 获得所有的条数
public void testGetCount() throws Exception {
PersonService personService = new PersonService(this.getContext());
Log.i(TAG, String.valueOf(personService.getCount()));

}

// 分页功能
public void testGetScrollData() throws Exception {
PersonService personService = new PersonService(this.getContext());
List persons = personService.getScrollData(0, 20);// 从0条到20条的数据
for (Person person : persons) {
Log.i(TAG, person.toString());
}

}

public void testDelete() throws Exception {
PersonService personService = new PersonService(this.getContext());
personService.delete(1, 2, 3);// 删除1.2.3三条记录
}

}

5.执行结果


安卓学习:(6)安卓操作sqlite数据库_List





举报

相关推荐

0 条评论