1.创建Android工程

Project name: db

BuildTarget:Android2.2

Application name: 数据库应用

Package name: com.jbridge.db

Create Activity: DBActivity

Min SDK Version:8、

2. Person实体

Java代码

package com.jbridge.domain;

import android.R.string;

public class Person {

private Integer id;

private String name;

private Short age;

public Person(String name, Short age) {

this.name = name;

this.age = age;

}

public Person(Integer id, String name, Short age) {

super();

this.id = id;

this.name = name;

this.age = age;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Short getAge() {

return age;

}

public void setAge(Short age) {

this.age = age;

}

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";

}

}

package com.jbridge.domain;

import android.R.string;

public class Person {

private Integer id;

private String name;

private Short age;

public Person(String name, Short age) {

this.name = name;

this.age = age;

}

public Person(Integer id, String name, Short age) {

super();

this.id = id;

this.name = name;

this.age = age;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Short getAge() {

return age;

}

public void setAge(Short age) {

this.age = age;

}

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";

}

}

3.编写DataBaseOpenHelper类

DataBaseOpenHelper继承自SQLiteOpenHelper类。我们需要创建数据表,必须重写onCreate(更新时重写onUpgrade方法)方法,在这个方法中创建数据表。

Java代码

package com.jbridge.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 String dbname = "zyj";

private static int version = 1;

public DataBaseOpenHelper(Context context) {

// 第一个参数是应用的上下文

// 第二个参数是应用的数据库名字

// 第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类

// 第四个参数是数据库版本,必须是大于0的int(即非负数)

super(context, dbname, null, version);

// TODO Auto-generated constructor stub

}

public DataBaseOpenHelper(Context context, String name,

CursorFactory factory, int version) {

super(context, name, factory, version);

// TODO Auto-generated constructor stub

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE IF NOT EXISTS person (personid integer primary key autoincrement, name varchar(20), age INTEGER)");

}

// onUpgrade()方法在数据库版本每次发生变化时都会把用户手机上的数据库表删除,然后再重新创建。

// 一般在实际项目中是不能这样做的,正确的做法是在更新数据库表结构时,还要考虑用户存放于数据库中的数据不会丢失,从版本几更新到版本几。

@Override

public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {

db.execSQL("DROP TABLE IF EXISTS person");

onCreate(db);

}

}

package com.jbridge.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 String dbname = "zyj";

private static int version = 1;

public DataBaseOpenHelper(Context context) {

// 第一个参数是应用的上下文

// 第二个参数是应用的数据库名字

// 第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类

// 第四个参数是数据库版本,必须是大于0的int(即非负数)

super(context, dbname, null, version);

// TODO Auto-generated constructor stub

}

public DataBaseOpenHelper(Context context, String name,

CursorFactory factory, int version) {

super(context, name, factory, version);

// TODO Auto-generated constructor stub

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE IF NOT EXISTS person (personid integer primary key autoincrement, name varchar(20), age INTEGER)");

}

// onUpgrade()方法在数据库版本每次发生变化时都会把用户手机上的数据库表删除,然后再重新创建。

// 一般在实际项目中是不能这样做的,正确的做法是在更新数据库表结构时,还要考虑用户存放于数据库中的数据不会丢失,从版本几更新到版本几。

@Override

public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {

db.execSQL("DROP TABLE IF EXISTS person");

onCreate(db);

}

}

4.编写PersonService类

PersonService类主要实现对业务逻辑和数据库的操作。

Java代码

package com.jbridge.service;

import java.util.ArrayList;

import java.util.Currency;

import java.util.List;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import com.jbridge.domain.Person;

public class PersonService {

private DataBaseOpenHelper dbOpenHelper;

// private Context context;

public PersonService(Context context) {

// this.context = context;

dbOpenHelper = new DataBaseOpenHelper(context);

}

public void save(Person person) {

SQLiteDatabase database = dbOpenHelper.getWritableDatabase();

database.beginTransaction();

database.execSQL("insert into person(name,age)values(?,?)",

new Object[] { person.getName(), person.getAge() });

// database.close();可以不关闭数据库,他里面会缓存一个数据库对象,如果以后还要用就直接用这个缓存的数据库对象。但通过

// context.openOrCreateDatabase(arg0, arg1, arg2)打开的数据库必须得关闭

database.setTransactionSuccessful();

database.endTransaction();

}

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.getId() });

}

public Person find(Integer id) {

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

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) {

StringBuffer sb = new StringBuffer();

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.toString()

+ ")", ids);

}

}

public List getScrollData(int startResult, int maxResult) {

List persons = new ArrayList();

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

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;

}

// 获取分页数据,提供给SimpleCursorAdapter使用。

public Cursor getRawScrollData(int startResult, int maxResult) {

List persons = new ArrayList();

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

return database.rawQuery(

"select personid as _id ,name,age from person limit ?,?",

new String[] { String.valueOf(startResult),

String.valueOf(maxResult) });

}

public long getCount() {

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

Cursor cursor = database.rawQuery("select count(*) from person", null);

if (cursor.moveToNext()) {

return cursor.getLong(0);

}

return 0;

}

}

package com.jbridge.service;

import java.util.ArrayList;

import java.util.Currency;

import java.util.List;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import com.jbridge.domain.Person;

public class PersonService {

private DataBaseOpenHelper dbOpenHelper;

// private Context context;

public PersonService(Context context) {

// this.context = context;

dbOpenHelper = new DataBaseOpenHelper(context);

}

public void save(Person person) {

SQLiteDatabase database = dbOpenHelper.getWritableDatabase();

database.beginTransaction();

database.execSQL("insert into person(name,age)values(?,?)",

new Object[] { person.getName(), person.getAge() });

// database.close();可以不关闭数据库,他里面会缓存一个数据库对象,如果以后还要用就直接用这个缓存的数据库对象。但通过

// context.openOrCreateDatabase(arg0, arg1, arg2)打开的数据库必须得关闭

database.setTransactionSuccessful();

database.endTransaction();

}

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.getId() });

}

public Person find(Integer id) {

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

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) {

StringBuffer sb = new StringBuffer();

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.toString()

+ ")", ids);

}

}

public List getScrollData(int startResult, int maxResult) {

List persons = new ArrayList();

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

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;

}

// 获取分页数据,提供给SimpleCursorAdapter使用。

public Cursor getRawScrollData(int startResult, int maxResult) {

List persons = new ArrayList();

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

return database.rawQuery(

"select personid as _id ,name,age from person limit ?,?",

new String[] { String.valueOf(startResult),

String.valueOf(maxResult) });

}

public long getCount() {

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

Cursor cursor = database.rawQuery("select count(*) from person", null);

if (cursor.moveToNext()) {

return cursor.getLong(0);

}

return 0;

}

}

下面是使用 insert()、delete()、update()和query()方法实现的业务类

Java代码

package com.jbridge.service;

import java.util.ArrayList;

import java.util.Currency;

import java.util.List;

import android.R.string;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import com.jbridge.domain.Person;

public class OtherPersonService {

private DataBaseOpenHelper dbOpenHelper;

// private Context context;

public OtherPersonService(Context context) {

// this.context = context;

dbOpenHelper = new DataBaseOpenHelper(context);

}

public void save(Person person) {

SQLiteDatabase database = dbOpenHelper.getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("name", person.getName());

contentValues.put("age", person.getAge());

database.insert("person", null, contentValues);

}

public void update(Person person) {

SQLiteDatabase database = dbOpenHelper.getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("name", person.getName());

contentValues.put("age", person.getAge());

database.update("person", null, "personid=?",

new String[] { String.valueOf(person.getId()) });

}

public Person find(Integer id) {

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

Cursor cursor = database.query("person", new String[] { "personid",

"name", "age" }, "personid=?",

new String[] { String.valueOf(id) }, null, null, null);

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) {

StringBuffer sb = new StringBuffer();

String[] strIds = new String[ids.length];

// for (Integer id : ids) {

// sb.append('?').append(',');

// }

for (int i = 0; i

sb.append('?').append(',');

strIds[i] = String.valueOf(ids[i]);

}

sb.deleteCharAt(sb.length() - 1);

SQLiteDatabase database = dbOpenHelper.getWritableDatabase();

database.delete("person", "personid in(" + sb.toString() + ")",

strIds);

}

}

public List getScrollData(int startResult, int maxResult) {

List persons = new ArrayList();

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

Cursor cursor = database.query("person", new String[] { "personid",

"name", "age" }, null, null, null, null, "personid desc",

startResult + "," + 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.getReadableDatabase();

Cursor cursor = database.query("person", new String[] { "count(*)" },

null, null, null, null, null);

if (cursor.moveToNext()) {

return cursor.getLong(0);

}

return 0;

}

}

package com.jbridge.service;

import java.util.ArrayList;

import java.util.Currency;

import java.util.List;

import android.R.string;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import com.jbridge.domain.Person;

public class OtherPersonService {

private DataBaseOpenHelper dbOpenHelper;

// private Context context;

public OtherPersonService(Context context) {

// this.context = context;

dbOpenHelper = new DataBaseOpenHelper(context);

}

public void save(Person person) {

SQLiteDatabase database = dbOpenHelper.getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("name", person.getName());

contentValues.put("age", person.getAge());

database.insert("person", null, contentValues);

}

public void update(Person person) {

SQLiteDatabase database = dbOpenHelper.getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("name", person.getName());

contentValues.put("age", person.getAge());

database.update("person", null, "personid=?",

new String[] { String.valueOf(person.getId()) });

}

public Person find(Integer id) {

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

Cursor cursor = database.query("person", new String[] { "personid",

"name", "age" }, "personid=?",

new String[] { String.valueOf(id) }, null, null, null);

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) {

StringBuffer sb = new StringBuffer();

String[] strIds = new String[ids.length];

// for (Integer id : ids) {

// sb.append('?').append(',');

// }

for (int i = 0; i < strIds.length; i++) {

sb.append('?').append(',');

strIds[i] = String.valueOf(ids[i]);

}

sb.deleteCharAt(sb.length() - 1);

SQLiteDatabase database = dbOpenHelper.getWritableDatabase();

database.delete("person", "personid in(" + sb.toString() + ")",

strIds);

}

}

public List getScrollData(int startResult, int maxResult) {

List persons = new ArrayList();

SQLiteDatabase database = dbOpenHelper.getReadableDatabase();

Cursor cursor = database.query("person", new String[] { "personid",

"name", "age" }, null, null, null, null, "personid desc",

startResult + "," + 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.getReadableDatabase();

Cursor cursor = database.query("person", new String[] { "count(*)" },

null, null, null, null, null);

if (cursor.moveToNext()) {

return cursor.getLong(0);

}

return 0;

}

}

5.编写测试类

编写一个针对PersonService的测试类,测试PersonService类中的各个方法是否正确。

Java代码

package com.jbridge.db;

import java.util.List;

import com.jbridge.domain.Person;

import com.jbridge.service.OtherPersonService;

import com.jbridge.service.PersonService;

import android.test.AndroidTestCase;

import android.util.Log;

public class PersonServiceTest extends AndroidTestCase {

private static String TAG = "PersonServiceTest";

// OtherPersonService personService = new

// OtherPersonService(this.getContext());

// //不可以这么写,因为Android把context环境变量是在PersonServiceTest实例化后给他的

public void testSave() throws Exception {

PersonService personService = new PersonService(this.getContext());

// personService.save(new Person("老猪", (short) 11));

for (int i = 0; i

personService.save(new Person("你" + i, (short) (i + 10)));

}

}

public void testFind() throws Exception {

PersonService personService = new PersonService(this.getContext());

Person person = personService.find(1);

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

}

public void testUpdate() throws Exception {

PersonService personService = new PersonService(this.getContext());

Person person = personService.find(1);

person.setName("lv");

personService.update(person);

}

public void testDelete() throws Exception {

PersonService personService = new PersonService(this.getContext());

personService.delete(1, 2, 3);

}

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, 3);

for (Person person : persons) {

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

}

}

}

package com.jbridge.db;

import java.util.List;

import com.jbridge.domain.Person;

import com.jbridge.service.OtherPersonService;

import com.jbridge.service.PersonService;

import android.test.AndroidTestCase;

import android.util.Log;

public class PersonServiceTest extends AndroidTestCase {

private static String TAG = "PersonServiceTest";

// OtherPersonService personService = new

// OtherPersonService(this.getContext());

// //不可以这么写,因为Android把context环境变量是在PersonServiceTest实例化后给他的

public void testSave() throws Exception {

PersonService personService = new PersonService(this.getContext());

// personService.save(new Person("老猪", (short) 11));

for (int i = 0; i < 10; i++) {

personService.save(new Person("你" + i, (short) (i + 10)));

}

}

public void testFind() throws Exception {

PersonService personService = new PersonService(this.getContext());

Person person = personService.find(1);

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

}

public void testUpdate() throws Exception {

PersonService personService = new PersonService(this.getContext());

Person person = personService.find(1);

person.setName("lv");

personService.update(person);

}

public void testDelete() throws Exception {

PersonService personService = new PersonService(this.getContext());

personService.delete(1, 2, 3);

}

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, 3);

for (Person person : persons) {

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

}

}

}

启用测试功能,不要忘记在AndroidManifest.xml文件中加入测试环境。为application元素添加一个子元素:,为application元素添加一个兄弟元素:。

SQLite数据库以单个文件存储,就像微软的Access数据库。有一个查看SQLite数据库文件的工具——SQLite Developer,我们可以使用它来查看数据库。Android将创建的数据库存放在”/data/data/ com.jbridge.db/databases/person”,我们将它导出然后使用SQLite Developer打开。

6.分页显示数据

我们在ContactsService类中,提供了一个获取分页数据的方法。我们将调用它获取的数据,使用ListView组件显示出来。

编辑mail.xml:

Xml代码

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:layout_width="40px"

android:layout_height="wrap_content"

android:textSize="20px"

android:id="@+id/personidtitle"

android:text="编号"

/>

android:layout_width="200px"

android:layout_height="wrap_content"

android:textSize="20px"

android:layout_toRightOf="@id/personidtitle"

android:layout_alignTop="@id/personidtitle"

android:gravity="center_horizontal"

android:id="@+id/nametitle"

android:text="姓名"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="20px"

android:layout_toRightOf="@id/nametitle"

android:layout_alignTop="@id/nametitle"

android:id="@+id/agetitle"

android:text="年龄"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/listView"

/>

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:layout_width="40px"

android:layout_height="wrap_content"

android:textSize="20px"

android:id="@+id/personidtitle"

android:text="编号"

/>

android:layout_width="200px"

android:layout_height="wrap_content"

android:textSize="20px"

android:layout_toRightOf="@id/personidtitle"

android:layout_alignTop="@id/personidtitle"

android:gravity="center_horizontal"

android:id="@+id/nametitle"

android:text="姓名"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="20px"

android:layout_toRightOf="@id/nametitle"

android:layout_alignTop="@id/nametitle"

android:id="@+id/agetitle"

android:text="年龄"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/listView"

/>

在mail.xml所在目录里添加一个personitem.xml:

Xml代码

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:layout_width="40px"

android:layout_height="wrap_content"

android:textSize="20px"

android:id="@+id/personid"

/>

android:layout_width="200px"

android:layout_height="wrap_content"

android:textSize="20px"

android:layout_toRightOf="@id/personid"

android:layout_alignTop="@id/personid"

android:gravity="center_horizontal"

android:id="@+id/name"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="20px"

android:layout_toRightOf="@id/name"

android:layout_alignTop="@id/name"

android:id="@+id/age"

/>

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:layout_width="40px"

android:layout_height="wrap_content"

android:textSize="20px"

android:id="@+id/personid"

/>

android:layout_width="200px"

android:layout_height="wrap_content"

android:textSize="20px"

android:layout_toRightOf="@id/personid"

android:layout_alignTop="@id/personid"

android:gravity="center_horizontal"

android:id="@+id/name"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="20px"

android:layout_toRightOf="@id/name"

android:layout_alignTop="@id/name"

android:id="@+id/age"

/>

编辑 DBActivity 类:

Java代码

package com.jbridge.db;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import com.jbridge.domain.Person;

import com.jbridge.service.PersonService;

import android.R.string;

import android.app.Activity;

import android.database.Cursor;

import android.os.Bundle;

import android.provider.LiveFolders;

import android.util.Log;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.SimpleCursorAdapter;

import android.widget.Toast;

public class DBActivity extends Activity {

/** Called when the activity is first created. */

private static final String TAG = "DBActivity";

/*实现方法一

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

PersonService personService=new PersonService(this);

ListView listView = (ListView) this.findViewById(R.id.listView);

List> data = new ArrayList

String>>();

// HashMap title = new HashMap();

// title.put("personid", "编号");

// title.put("name", "姓名");

// title.put("age", "年龄");

// data.add(title);

List persons= personService.getScrollData(0, 10);

for (Person person : persons) {

HashMap p = new HashMap();

p.put("personid", String.valueOf(person.getId()));

p.put("name", person.getName());

p.put("age",String.valueOf(person.getAge()));

data.add(p);

}

// 适配器有:

// ArrayAdapter

// simpAdapter

// SimpleCursorAdapter

SimpleAdapter adapter = new SimpleAdapter(DBActivity.this, data,

R.layout.personitem,

new String[] { "personid", "name", "age" },

new int[] {R.id.personid, R.id.name, R.id.age });

listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

@Override

// parent即为你点击的listView

// view为listview的外面布局

public void onItemClick(AdapterView> parent, View view, int position,

long id) {

ListView listView= (ListView) parent;

HashMap itemdata= (HashMap)

listView.getItemAtPosition(position);

String personid=itemdata.get("personid");

String name=itemdata.get("name");

String age=itemdata.get("age");

Log.i(TAG,view.getClass().getName());

Log.i(TAG, "personid: "+personid+ "   name: "+name+"   age:   "+age);

Log.i(TAG," position==id:"+ (position==id));

Toast.makeText(DBActivity.this, name, Toast.LENGTH_LONG).show();

}

});

}

*/

//  实现方法二(游标)

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

PersonService personService = new PersonService(this);

ListView listView = (ListView) this.findViewById(R.id.listView);

List> data = new ArrayList>();

// HashMap title = new HashMap();

// title.put("personid", "编号");

// title.put("name", "姓名");

// title.put("age", "年龄");

// data.add(title);

// 适配器有:

// ArrayAdapter

// simpAdapter

// SimpleCursorAdapter

Cursor cursor = personService.getRawScrollData(0, 10);

SimpleCursorAdapter adapter = new SimpleCursorAdapter(DBActivity.this,

R.layout.personitem, cursor, new String[] { "_id", "name",

"age" },

new int[] { R.id.personid, R.id.name, R.id.age });

listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

// parent即为你点击的listView

// view为listview的外面布局

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

ListView listView = (ListView) parent;

Cursor cursor = (Cursor) listView.getItemAtPosition(position);

String personid = String.valueOf(cursor.getInt(0));

String name = String.valueOf(cursor.getString(1));

String age = String.valueOf(cursor.getShort(2));

Log.i(TAG, view.getClass().getName());

Log.i(TAG, "personid: " + personid + "   name: " + name

+ "   age:   " + age);

Log.i(TAG, " position==id:" + (position == id));

Toast.makeText(DBActivity.this, name, Toast.LENGTH_LONG).show();

}

});

}

}

package com.jbridge.db;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import com.jbridge.domain.Person;

import com.jbridge.service.PersonService;

import android.R.string;

import android.app.Activity;

import android.database.Cursor;

import android.os.Bundle;

import android.provider.LiveFolders;

import android.util.Log;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.SimpleCursorAdapter;

import android.widget.Toast;

public class DBActivity extends Activity {

/** Called when the activity is first created. */

private static final String TAG = "DBActivity";

/*实现方法一

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

PersonService personService=new PersonService(this);

ListView listView = (ListView) this.findViewById(R.id.listView);

List> data = new ArrayList

String>>();

// HashMap title = new HashMap();

// title.put("personid", "编号");

// title.put("name", "姓名");

// title.put("age", "年龄");

// data.add(title);

List persons= personService.getScrollData(0, 10);

for (Person person : persons) {

HashMap p = new HashMap();

p.put("personid", String.valueOf(person.getId()));

p.put("name", person.getName());

p.put("age",String.valueOf(person.getAge()));

data.add(p);

}

// 适配器有:

// ArrayAdapter

// simpAdapter

// SimpleCursorAdapter

SimpleAdapter adapter = new SimpleAdapter(DBActivity.this, data,

R.layout.personitem,

new String[] { "personid", "name", "age" },

new int[] {R.id.personid, R.id.name, R.id.age });

listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

@Override

// parent即为你点击的listView

// view为listview的外面布局

public void onItemClick(AdapterView> parent, View view, int position,

long id) {

ListView listView= (ListView) parent;

HashMap itemdata= (HashMap)

listView.getItemAtPosition(position);

String personid=itemdata.get("personid");

String name=itemdata.get("name");

String age=itemdata.get("age");

Log.i(TAG,view.getClass().getName());

Log.i(TAG, "personid: "+personid+ " name: "+name+" age: "+age);

Log.i(TAG," position==id:"+ (position==id));

Toast.makeText(DBActivity.this, name, Toast.LENGTH_LONG).show();

}

});

}

*/

//实现方法二(游标)

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

PersonService personService = new PersonService(this);

ListView listView = (ListView) this.findViewById(R.id.listView);

List> data = new ArrayList>();

// HashMap title = new HashMap();

// title.put("personid", "编号");

// title.put("name", "姓名");

// title.put("age", "年龄");

// data.add(title);

// 适配器有:

// ArrayAdapter

// simpAdapter

// SimpleCursorAdapter

Cursor cursor = personService.getRawScrollData(0, 10);

SimpleCursorAdapter adapter = new SimpleCursorAdapter(DBActivity.this,

R.layout.personitem, cursor, new String[] { "_id", "name",

"age" },

new int[] { R.id.personid, R.id.name, R.id.age });

listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

// parent即为你点击的listView

// view为listview的外面布局

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

ListView listView = (ListView) parent;

Cursor cursor = (Cursor) listView.getItemAtPosition(position);

String personid = String.valueOf(cursor.getInt(0));

String name = String.valueOf(cursor.getString(1));

String age = String.valueOf(cursor.getShort(2));

Log.i(TAG, view.getClass().getName());

Log.i(TAG, "personid: " + personid + " name: " + name

+ " age: " + age);

Log.i(TAG, " position==id:" + (position == id));

Toast.makeText(DBActivity.this, name, Toast.LENGTH_LONG).show();

}

});

}

}

嵌入式mysql数据库文件读取_使用嵌入式关系型SQLite数据库存储数据相关推荐

  1. python连接sqlite数据库的代码_【Python 连接SQLite数据库文件】

    涉及: Python连接db文件 如何按照列名获取数据 如何传入参数 示例代码如下: # encoding=utf-8 import sqlite3 def get_signal_names(db_f ...

  2. Mysql这么输入作文_我用access做数据库.最多可不可以在里面输入一篇作文啊?是不是要MYsql做啊?...

    展开全部 access 里可以插入62616964757a686964616fe59b9ee7ad9431333166353165 OLE对象 谈ASP+ACCESS网... 2005-12-22 1 ...

  3. PHP-CRUD-API:将 REST API 添加到 MySQL/MariaDB、PostgreSQL、SQL Server 或 SQLite 数据库的单个文件 PHP 脚本

    https://github.com/mevdschee/php-crud-api 将 REST API 添加到 MySQL/MariaDB.PostgreSQL.SQL Server 或 SQLit ...

  4. mysql任意文件读取漏洞学习

    前言 最近在做ctf题时发现关于mysql任意文件读取漏洞的考点非常频繁,而且一直都朦胧不清,也没去学习,在不久前的DDCTF和国赛,还有最近的Nu1lCTF中都考到了这个点,利用Load data ...

  5. android sqlite删除表中所有数据,对于Sqlite,删除Sqlite数据库中的所有表,删除sqlite数据库...

    对于Sqlite,删除Sqlite数据库中的所有表,删除sqlite数据库 SQLite数据库中一个特殊的名叫SQLITE_MASTER上执行一个SELECT查询以获得所有表的索引.每一个SQLite ...

  6. 【嵌入式】第一次大作业_记录环境温度并存入数据库

    第一次嵌入式课程大作业 一年级下的嵌入式期末考试,当时做完忘记录一下了,现在重新上传 课程要求: (1) 记录24小时内 当前环境的 温.湿度.存入数据库 (每分钟记录1次): (2) 如有人靠近树莓 ...

  7. mysql 日志文件 自动_自动恢复MySQL数据库的日志文件思路分享及解决方案

    如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据."mysqlbinlog:用 ...

  8. mysql 日志文件 自动_教你自动恢复MySQL数据库的日志文件

    如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据."mysqlbinlog:用 ...

  9. mysql 查看日志大小_查看sql日志大小/数据库文件的大小

    我们执行命令可以得到以下结果: dbcc sqlperf(logspace)Database Name  Log Size (MB)            Log Space Used (%)     ...

  10. 使用嵌入式关系型SQLite数据库存储数据

    除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...

最新文章

  1. 港科大硕士ICCV 论文涉嫌抄袭,导师回应,二作已申请撤稿
  2. 黄学东出任微软全球人工智能首席技术官,从负责语音技术到微软Azure云的转身
  3. 文巾解题 180. 连续出现的数字
  4. 简介明了——map+multimap头文件函数详解
  5. SAP CRM系统里Opportunity预期销售金额和货币相关的自动转换
  6. vscode安装python插件失败_vscode插件安装失败的解决方案
  7. 使用ffmpeg进行h.264编码
  8. 软考信息安全工程师备考笔记8:第八章应用系统安全工程备考要点
  9. 余承东:Mate40系列5000万像素远好于友商1亿像素
  10. python的魔法方法
  11. Spring学习总结(13)——Spring+Log4j+ActiveMQ实现远程记录日志
  12. 404 错误页面:重装上阵
  13. 英语12个月份名称的由来
  14. 软考中级数据库系统工程师备考经验分享
  15. 机器学习中的数学——激活函数(六):Parametric ReLU(PReLU)函数
  16. 从《牛津高阶英汉词典》中提取单词(1)
  17. Linux 系统管理命令
  18. 抱怨一下项立刚先生和他的飞象网的博客
  19. 邮箱退信提示:“recipient does not have an account.”
  20. Android系统启动顺序(按下power键后所做的的工作)

热门文章

  1. Spring Cloud 常用注解
  2. 【虚拟机装黑苹果(第三弹)】macOS安装镜像格式转换(dmg转iso,非UltraISO方法)
  3. 性能测试-性能狗(Perfdog)测试与数据分析
  4. SPSS时序全局主成分分析方法
  5. Linux之flash流媒体服务器red5安装
  6. JLink.exe JFlash.exe batch文件一键下载
  7. 王道训练营3月10日
  8. linux内核源码 进程,详解:Linux内核源代码
  9. jsp内置对象与四种作用域
  10. 一些神奇的小函数(一)——gotoxy篇