创建数据库与完成数据增删改查 SQLite数据库

来源:互联网 发布:美空军云计算 编辑:程序博客网 时间:2024/06/05 23:07

使用嵌入式关系型SQLite数据库   支持NULL,INTEGER,REAL(浮点数字),TEXT(字符串文本),BLOB(二进制对象)数据类型

创建表的SQL语句:CREATE TABLE person(personid integer primary key autoincrement,name varchar(20),可以省略name字段的类型信息

SQLite可以解析大部分标准SQL语句,如

查询语句:select*from表名      where条件语句       group by分组语句         having...order by 排序语句

eg:select*from person

      select*from person order by id desc

      select  name  feom person  group by name having count(*)>1

分页SQL:select*from Account  limite  5  offset  3 (获取5条语句,跳过前面3条语句)   或者select*from Account  limite  3.5(获取5条语句,跳过前面3条语句)

插入语句:insert   into 表名(字段列表)value(值列表)

     eg:insert into  person  (name,age)value(“船只”,3)

更新语句:update表名set字段名=值where条件子句。

eg:update  person set  name=船只 where  id=10.

删除语句:delete from表名where 条件子句

eg:delete from  person where  id=10

获取添加记录后自增长的ID值:SELECT  last_insert_rowid()

execSQL()方法可以执行insert,delete,update和CREATE TABLE之类有更改行为的SQL语句;rawQuery()方法用于执行select语句。execSQL()方法的使用例子:
       SQLiteDatabase db=

db.exerSQL("insert into person(name ,age )values(?,?)“,("传世博客",4);

db.close();

1.创建数据库,要具有自动创建数据库功能(在用户第一次使用软件时,调用类中的SQLiteOpenHelper.getReadableDatabase或SQLiteOpenHelper.getWritableDatabase,会自动创建数据库)


用于添删改查的方法有:execSQL() , rawQuery() , insert() , delete() , update() , query()


package cn.itcast.service;
public class DBOpenHelper extends SQLiteOpenHelper {
public DBOpenHelper(Context context) {
super(context, "itcast.dbn", null, 2);  //创建在当前应用所在包底下的/databases/中
}
 /**
  * 第二个参数:指定要生成的数据库的名称;第三个参数:传入null代表使用系统默认的游标工厂产生游标对象;第三个参数:代表数据库文件的版本号,要求不要为0
  */
@Override
public void onCreate(SQLiteDatabase db) {   //在数据库第一次被创建的时候调用的
//类SQLiteDatabase封装了针对数据库的所有操作,比如增删改查。
db.execSQL("create table person(personid integer primary key autoincrement, name varchar(20))");//创建表
}
/* 数据库第一次生成时调用该方法,创建一些表或者初始化一些数据 
     * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase) 
     */  
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //数据库文件版本发生变化时被调用。
db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL");
}

}


业务并

(1)使用execSQL() , rawQuery() 对数据库进行增删改查

package cn.itcast.service;
public class OtherPersonService {      //业务并
private DBOpenHelper dbOpenHelper;
public OtherPersonService(Context context) {       //构造器
this.dbOpenHelper =new DBOpenHelper(context);
}
public void sava(Person person){//增加记录
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();      //取得数据库的操作实例
ContentValues values=new ContentValues();
values.put("name", person.getName());
values.put("phone", person.getPhone());
db.insert("person", null, values);
/*第一个参数:表的名称 ; 第三个参数:NUll值字段  ;
*/
}
public void delete(Integer id){  //删除记录
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();      //取得数据库的操作实例
db.delete("person","personid=?", new String[]{id.toString()});
}
public void update(Person person){//更新记录
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();      //取得数据库的操作实例
ContentValues values=new ContentValues();
values.put("name", person.getName());
values.put("phone", person.getPhone());
db.update("person", values, "personid=?", new String[]{person.getId().toString()});
}
public Person find(Integer id){//查找记录
SQLiteDatabase db=dbOpenHelper.getReadableDatabase();      //取得数据库的操作实例
Cursor cursor=db.query("person",null, "personid=?", new String[]{id.toString()},null, null, null);
if(cursor.moveToFirst()){
int personid=cursor.getInt(cursor.getColumnIndex("personid"));
String name=cursor.getString(cursor.getColumnIndex("name"));
String phone=cursor.getString(cursor.getColumnIndex("phone"));
return new Person(personid,name,phone);
}
//Cursor 对查询的结果进行随机访问
cursor.close();
return null;
}
/**
* 分页获取记录
* @param offset 跳过前面多少条记录
* @param maxResult  每页获取多少条记录
* @return
*/
public List<Person> getScrollDate(int offset,int maxResult){         //分页
List<Person>persons=new ArrayList<Person>();
SQLiteDatabase db=dbOpenHelper.getReadableDatabase();      //取得数据库的操作实例
Cursor cursor=db.query("person", null, null, null, null, null, "person asc", offset+","+maxResult);
while(cursor.moveToNext()){        //移动到下一条语句
int personid=cursor.getInt(cursor.getColumnIndex("personid"));
String name=cursor.getString(cursor.getColumnIndex("name"));
String phone=cursor.getString(cursor.getColumnIndex("phone"));
persons.add(new Person(personid,name,phone));
}
cursor.close();
return persons;
}
/**
* 获取记录总数
* @return
*/
public long getCount(){       //得到操作数
SQLiteDatabase db=dbOpenHelper.getReadableDatabase();      //取得数据库的操作实例
Cursor cursor=db.query("person", new String[]{"count (*)"}, null, null, null, null, null);
cursor.moveToFirst();
long result=cursor.getLong(0);
cursor.close();
return result;
}
}

(2)使用insert() , delete() , update() , query()对数据库进行增删改查

package cn.itcast.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 cn.itcast.domin.Person;


public class OtherPersonService {      //业务并
private DBOpenHelper dbOpenHelper;
public OtherPersonService(Context context) {       //构造器
this.dbOpenHelper =new DBOpenHelper(context);
}
public void sava(Person person){//增加记录
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();      //取得数据库的操作实例
ContentValues values=new ContentValues();
values.put("name", person.getName());
values.put("phone", person.getPhone());
db.insert("person", null, values);
/*第一个参数:表的名称 ; 第三个参数:NUll值字段  ;
*/

}
public void delete(Integer id){  //删除记录
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();      //取得数据库的操作实例
db.delete("person","personid=?", new String[]{id.toString()});
}
public void update(Person person){//更新记录
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();      //取得数据库的操作实例
ContentValues values=new ContentValues();
values.put("name", person.getName());
values.put("phone", person.getPhone());
db.update("person", values, "personid=?", new String[]{person.getId().toString()});
}
public Person find(Integer id){//查找记录
SQLiteDatabase db=dbOpenHelper.getReadableDatabase();      //取得数据库的操作实例
Cursor cursor=db.query("person",null, "personid=?", new String[]{id.toString()},null, null, null);
if(cursor.moveToFirst()){
int personid=cursor.getInt(cursor.getColumnIndex("personid"));
String name=cursor.getString(cursor.getColumnIndex("name"));
String phone=cursor.getString(cursor.getColumnIndex("phone"));
return new Person(personid,name,phone);
}
//Cursor 对查询的结果进行随机访问
cursor.close();
return null;
}
/**
* 分页获取记录
* @param offset 跳过前面多少条记录
* @param maxResult  每页获取多少条记录
* @return
*/
public List<Person> getScrollDate(int offset,int maxResult){         //分页
List<Person>persons=new ArrayList<Person>();
SQLiteDatabase db=dbOpenHelper.getReadableDatabase();      //取得数据库的操作实例
Cursor cursor=db.query("person", null, null, null, null, null, "person asc", offset+","+maxResult);
while(cursor.moveToNext()){        //移动到下一条语句
int personid=cursor.getInt(cursor.getColumnIndex("personid"));
String name=cursor.getString(cursor.getColumnIndex("name"));
String phone=cursor.getString(cursor.getColumnIndex("phone"));
persons.add(new Person(personid,name,phone));
}
cursor.close();
return persons;
}
/**
* 获取记录总数
* @return
*/
public long getCount(){       //得到操作数
SQLiteDatabase db=dbOpenHelper.getReadableDatabase();      //取得数据库的操作实例
Cursor cursor=db.query("person", new String[]{"count (*)"}, null, null, null, null, null);
cursor.moveToFirst();
long result=cursor.getLong(0);
cursor.close();
return result;
}
}


为课程表添加一个Java并

package cn.itcast.domin;
public class Person {        //为课程表添加一个Java并
private Integer id;
private String name;
private String phone;
public Person(){}    //无参构造器

public Person(String name, String phone) {
// super();
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 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;
}


@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", phone=" + phone + "]";
}
    
}




单元测试:

(1)

package cn.itcast.test;
public class AndroidServiceTest extends AndroidTestCase {
private static final String TAG="AndroidServiceTest";
public void testCreateDB()throws Exception{
DBOpenHelper dbOpenHelper=new DBOpenHelper(getContext());        //getContext()获得上下文对象
dbOpenHelper.getReadableDatabase();
}
public void testSave() throws Exception{
PersonService service=new PersonService(this.getContext());
for(int i=0;i<20;i++){
Person person=new Person("zhangxx"+ i,"136765765"+ i);
service.sava(person);
}
}
    public void testDelete() throws Exception{
    PersonService service=new PersonService(this.getContext());
service.delete(15);        //删除id为15的这条记录
}
    public void testUpdate() throws Exception{
    PersonService service=new PersonService(this.getContext());
    Person person=service.find(1);    //找到输入的记录
    person.setName("zhangxiaoxiao");
    service.update(person);
}


    public void testFind() throws Exception{
    PersonService service=new PersonService(this.getContext());
    Person person=service.find(1);    //找到输入的记录
    Log.i(TAG, person.toString());
    }
    public void testScrollData() throws Exception{
    PersonService service=new PersonService(this.getContext());
    List<Person> persons=service.getScrollDate(10, 5);  
    for(Person person : persons){
    Log.i(TAG, person.toString());
    }
    }
    public void testCount() throws Exception{
    PersonService service=new PersonService(this.getContext());
    long result=service.getCount();
    Log.i(TAG,result+"");
    }
}

(2)

package cn.itcast.test;
public class OtherAndroidServiceTest extends AndroidTestCase {
private static final String TAG="AndroidServiceTest";

// public void testCreateDB()throws Exception{
// DBOpenHelper dbOpenHelper=new DBOpenHelper(getContext());        //getContext()获得上下文对象
// dbOpenHelper.getReadableDatabase();
// }
public void testSave() throws Exception{
OtherPersonService service=new OtherPersonService(this.getContext());
Person person=new Person("liming","136000065");
service.sava(person);
}
    public void testDelete() throws Exception{
    OtherPersonService service=new OtherPersonService(this.getContext());
service.delete(15);        //删除id为15的这条记录
}
    public void testUpdate() throws Exception{
    OtherPersonService service=new OtherPersonService(this.getContext());
    Person person=service.find(1);    //找到输入的记录
    person.setName("aaaabbb");
    service.update(person);
}


    public void testFind() throws Exception{
    OtherPersonService service=new OtherPersonService(this.getContext());
    Person person=service.find(1);    //找到输入的记录
    Log.i(TAG, person.toString());
    }
    public void testScrollData() throws Exception{
    OtherPersonService service=new OtherPersonService(this.getContext());
    List<Person> persons = service.getScrollDate(0,1);  
    for(Person person : persons){
    Log.i(TAG, person.toString());
    }
    }
    public void testCount() throws Exception{
    OtherPersonService service=new OtherPersonService(this.getContext());
    long result=service.getCount();
    Log.i(TAG,result+"");
    }
}

0 0
原创粉丝点击