每日一贴,今天的内容关键字为方法数据库

声明:主要是对sqlite的使用做一下简单的汇总。

首先建立数据库和建立数据表

/** * @FILE:DBOpenHelper.java * @AUTHOR:Administrator * @DATE:2013-5-14 下昼10:06:29 **/package com.yehui.service;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;/******************************************* *  * @CLASS:DBOpenHelper * @DESCRIPTION:sqlite数据库必须继承SQLiteOpenHelper(抽象类) * @AUTHOR:Administrator * @VERSION:v1.0 * @DATE:2013-5-14 下昼10:06:29 *******************************************/public class DBOpenHelper extends SQLiteOpenHelper {/** * create a instance DBOpenHelper. *  * @param context *            上下文对象 * @param name *            数据库名称 * @param factory *            CursorFactory * @param version *            版本号(第一次生成数据库时,版本号是1,只执行一次) */public DBOpenHelper(Context context) {super(context, "yehui.db", null, 1);}/* * (non-Javadoc)当创立数据库的时候就会创立上面的表,可以在这里创立多张表:表中的字段的类型可以完整没有, * varchar(20)长度并不能限制。可以输入超越20字符的长度。 *  * @see * android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite * .SQLiteDatabase) */@Overridepublic void onCreate(SQLiteDatabase db) {String sql = "create table person(personid integer primary key autoincrement, name varchar(20))";// 执行这句sqldb.execSQL(sql);}/* * (non-Javadoc)对数据库更新,可以在这个方法里头对数据表做alter.:也就是说当 super(context, "yehui.db", * null, 1);这里头的版本号发生改变的时候就会调用这个方法,执行完成后将数据库的版本号设置为新的版本号 *  * @see * android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite * .SQLiteDatabase, int, int) */@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {String sql = "ALTER TABLE PERSON ADD PHONE VARCHAR(12) NULL";db.execSQL(sql);}}

其次,为了方法建立一个bean来对应表中的内容:

/** * @FILE:Person.java * @AUTHOR:Administrator * @DATE:2013-5-14 下昼10:31:18 **/package com.yehui.entity;/******************************************* *  * @CLASS:Person * @DESCRIPTION:bean * @AUTHOR:Administrator * @VERSION:v1.0 * @DATE:2013-5-14 下昼10:31:18 *******************************************/public class Person {private Integer id;private String name;private String phone;public Person(String name, String phone) {this.name = name;this.phone = phone;}public Person(Integer id, String name, String phone) {super();this.id = id;this.name = name;this.phone = phone;}public Person() {super();}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", phone=" + phone + "]";}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 String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public static void main(String[] args) {Person person = new Person("yehui", "132");System.out.println(person.toString());}}

再次:建立一个service类来处置业务逻辑(注意两种不同的操作方法使用sql的不同)

每日一道理
“一年之计在于春”,十几岁的年纪,正是人生的春天,别辜负了岁月老人的厚爱与恩赐。行动起来,播种梦想吧!
/** * @FILE:PersonService.java * @AUTHOR:Administrator * @DATE:2013-5-14 下昼10:41:47 **/package com.yehui.service;import java.util.ArrayList;import java.util.List;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import com.yehui.entity.Person;/******************************************* *  * @CLASS:PersonService * @DESCRIPTION:对person进行增删改查操作 * @AUTHOR:Administrator * @VERSION:v1.0 * @DATE:2013-5-14 下昼10:41:47 *******************************************/public class PersonService {private DBOpenHelper dbOpenHelper;public final static String TAG = "PersonService";/** * create a instance PersonService. 会创立数据库 *  * @param context */public PersonService(Context context) {super();this.dbOpenHelper = new DBOpenHelper(context);}/** * @description:保存 * @author:Administrator * @return:void * @param person */public void save(Person person) {// 如果数据表不存在先创立数据表,存在,则不创立SQLiteDatabase db = dbOpenHelper.getWritableDatabase();// SQLiteDatabase db1 = dbOpenHelper.getWritableDatabase();这个和// SQLiteDatabase db是同一个对象// 方法1// 使用?。参数形式// db.execSQL("insert into person(name,phone) values(?,?)", new Object[]// {// person.getName(), person.getPhone() });// 或者使用sqlite自带的操作方法// 方法2ContentValues values = new ContentValues();values.put("name", person.getName());values.put("phone", person.getPhone());db.insert("person", null, values);// 注意这里的第二个参数(表的字段名)。db.insert("person", "personid",// null);也就说新增一条记录,id是null:这个语句不会报错,只会按自增的id新增一条记录}/** * @description:按照id删除数据 * @author:Administrator * @return:void * @param id */public void delete(Integer id) {// 如果数据表不存在先创立数据表,存在,则不创立SQLiteDatabase db = dbOpenHelper.getWritableDatabase();// 方法1// 使用?。参数形式// db.execSQL("delete from person where personid=?", new Object[] { id// });// 方法2db.delete("person", "personid=?", new String[] { id.toString() });}public void update(Person person) {// 如果数据表不存在先创立数据表,存在,则不创立SQLiteDatabase db = dbOpenHelper.getWritableDatabase();// 方法1// 使用?。参数形式// db.execSQL("update  person set name=?,phone=? where personid=? ", new// Object[] { person.getName(),person.getPhone(),person.getPersonid()// });// 方法2ContentValues values = new ContentValues();values.put("name", person.getName());values.put("phone", person.getPhone());db.update("person", values, "personid=?", new String[] { person.getId().toString() });}/** * @description:依照id查找数据 * @author:Administrator * @return:Person * @param id * @return */public Person find(Integer id) {Person person = null;// 如果数据表不存在先调用getReadableDatabase方法,存在,则不创立SQLiteDatabase db = dbOpenHelper.getReadableDatabase();// 方法1// 使用?。参数形式// Cursor cursor = db.rawQuery("select * from person where personid=?",// new String[] { id.toString() });// 方法2Cursor cursor = db.query("person", null, "personid=?",new String[] { id.toString() }, null, null, null);// 如果找到一个result,则返回resultif (cursor.moveToFirst()) {person = new Person();person.setId(cursor.getColumnIndex("personid"));person.setName(cursor.getString(cursor.getColumnIndex("name")));person.setPhone(cursor.getString(cursor.getColumnIndex("phone")));}Log.v(TAG, person.toString());cursor.close();return person;}/** * @description:分页查询 * @author:Administrator * @return:List<Person> 结果 * @param offset *            跳过几条数据 * @param maxResult *            总共查找几条数据 * @return */public List<Person> getScrollData(Integer offset, int maxResult) {List<Person> persons = new ArrayList<Person>();// 如果数据表不存在先调用getReadableDatabase方法,存在,则不创立SQLiteDatabase db = dbOpenHelper.getReadableDatabase();// 方法1// 使用?。参数形式// Cursor cursor = db.rawQuery(// "select * from person order by personid asc limit ?,?",// new String[] { String.valueOf(offset),// String.valueOf(maxResult) });// 方法2Cursor cursor = db.query("person", null, null, null, null, null,"personid asc", offset + "," + maxResult);// 循环将结果加入到list中while (cursor.moveToNext()) {Person person = new Person();person.setId(cursor.getColumnIndex("personid"));person.setName(cursor.getString(cursor.getColumnIndex("name")));person.setPhone(cursor.getString(cursor.getColumnIndex("phone")));persons.add(person);}cursor.close();// Log.v(TAG, person.toString());return persons;}/** * @description:获得记录的总数 * @author:Administrator * @return:long * @return */public long getCount() {SQLiteDatabase db = dbOpenHelper.getReadableDatabase();// 方法1// Cursor cursor = db.rawQuery("select count(*) from person", null);// 方法2Cursor cursor = db.query("person", new String[] { "count('*')" }, null,null, null, null, null, null);cursor.moveToFirst();// 获得第一个字段的全部记录数long count = cursor.getLong(0);cursor.close();Log.v(TAG, "记录总数" + count);return count;}}

最后使用单元测试来测试功能:

/** * @FILE:DBTest.java * @AUTHOR:Administrator * @DATE:2013-5-14 下昼11:52:06 **/package com.yehui.db;import java.util.List;import android.app.Activity;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.test.AndroidTestCase;import android.view.Menu;import com.yehui.entity.Person;import com.yehui.service.DBOpenHelper;import com.yehui.service.PersonService;/******************************************* *  * @CLASS:DBTest * @DESCRIPTION:sqlite单元测试必须继承AndroidTestCase * @AUTHOR:Administrator * @VERSION:v1.0 * @DATE:2013-5-14 下昼11:52:06 *******************************************/public class DBTest extends AndroidTestCase  {private DBOpenHelper dbOpenHelper;private SQLiteDatabase sqliteDatabase;public void createDB() {dbOpenHelper = new DBOpenHelper(this.getContext());// 创立数据表sqliteDatabase = dbOpenHelper.getWritableDatabase();}public void save() {PersonService personService = new PersonService(this.getContext());Person person = new Person("zhangxueyou", "123456");personService.save(person);}public void delete() {PersonService personService = new PersonService(this.getContext());personService.delete(2);}public void update() {PersonService personService = new PersonService(this.getContext());Person person = personService.find(1);person.setName("guofucheng");personService.update(person);}public Person find() {PersonService personService = new PersonService(this.getContext());Person person = personService.find(1);return person;}public List<Person> getScrollData() {PersonService personService = new PersonService(this.getContext());List<Person> persons = personService.getScrollData(0, 2);return persons;}public long getCount() {PersonService personService = new PersonService(this.getContext());long count = personService.getCount();return count;}}

好了,总结就这么多了。


文章结束给大家分享下程序员的一些笑话语录: 面试官:熟悉哪种语言
应聘者:JAVA
面试官:知道什么叫类么
应聘者:我这人实在,工作努力,不知道什么叫累
面试官:知道什么是包?
应聘者:我这人实在 平常不带包 也不用公司准备了
面试官:知道什么是接口吗?
应聘者:我这个人工作认真。从来不找借口偷懒
面试官:知道什么是继承么
应聘者:我是孤儿没什么可以继承的
面试官:知道什么叫对象么?
应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
面试官:知道多态么?
应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系??

更多相关文章

  1. Frida对Android(安卓)app的JS脚本注入方法
  2. Android设置全屏隐藏状态栏的方法
  3. 使用adb出现假emulator的解决方法
  4. h5
  5. Android(安卓)LayoutInflater深度解析
  6. android 中使用Java反射Reflect,输出类中变量值,方便调试。
  7. Android(安卓)自定义组件之如何实现自定义组件
  8. android获取状态栏的高度。
  9. android中BaseActivity的公共方法

随机推荐

  1. mac平台adb、tcpdump捕手android移动网络
  2. android 蓝牙通讯
  3. android > 建立WIFI 热点
  4. android 输入法的使用
  5. 几个Android小错误解决方法
  6. android 获取手机中的联系人
  7. android framework在launcher中隐藏指定a
  8. 首先要感谢 lordhong proper carlosbdw
  9. 美图秀秀自由拼图android实现
  10. android 自带图标介绍