创建数据库与完成数据增删改查 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+"");
}
}
- 创建数据库与完成数据增删改查 SQLite数据库
- 创建数据库与完成数据增删改查(二)
- SQLite数据库创建与增删查改
- iOS-->sqlite数据库,数据表创建,数据的增删改查
- sqlite学习,如何创建数据库与增删改查
- SQLite数据库创建及增删改查
- SQLite数据库创建,增删查改
- sqlite数据库增删改查
- SQLite数据库增删改查
- 数据库的增删改查 →创建sqlite数据库
- (Android)创建数据库与完成数据库的增删查改
- SQlite---SQLite数据库增删改查操作
- Android -- SQLite 数据库创建,增删改查,事务处理
- 创建SQLite数据库并实现增删改查
- Android SQLite创建数据库和两种增删改查
- 安卓使用SQLite数据库(创建、增删改查)
- SQLite数据库的创建、常用方法增删改查
- 【Android】SQLite 创建数据库,并实现增删改查
- 【翻译自mos文章】在win2003 sp1下,遇到无法解释的数据库性能下降
- 第八周项目三(2):分数类中的运算符重载:升级版
- Git的基础用法(一)
- Sql server 没有足够的系统内存来运行此查询
- HDU1002(大数)
- 创建数据库与完成数据增删改查 SQLite数据库
- Myeclipse中怎么设置Servlet模板??
- delphi中combobox键值对
- spring security与cas 集成(中)
- java中的String,StringBuffer和StringBuilder浅谈
- HttpClient使用详解
- 12th.浙江省省赛A题 Ace of Aces
- EL学习
- springmvc学习笔记(16)——重定向和转发