第5章 SQLite数据库

  • 格式:ppt
  • 大小:2.86 MB
  • 文档页数:29

下载文档原格式

  / 29
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章 SQLite数据库
SQLite基本操作 SQLite事务操作 ListView控件的使用 常见的数据适配器
5.1 SQLite数据库简介
什么是SQLite?
5.1 SQLite数据库简介
是一个轻量级数据库,第一个版本诞生于 2000年5月。它最初为嵌入式设计的,占用资源非 常低,在内存中只需要占用几百KB的存储空间。
5.4.1 ListView控件
用列表形式展示具体数据内容,如果显 示过多,则会出现垂直滚动条。
<ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent
根据position得到某个Item的id
position)
public View getView(int position, 得到相应position对应Item视图,
View convertView, ViewGroup position是当前Item的位置,
parent)
convertView用于复用旧视图,parent
}
5.3.2 SQLite事务操作
• 事务是对数据库的一组操作,它可以由一条或多条SQL 语句组成,同一个事务的操作具备同步的特点,如果有 一条语句无法执行,那么所有语句都不会执行。也就是 说,事务中的语句要么都执行,要么都不执行。
银行转账
转入
转出
操作都执行,或都不执行
MyHelper helper = new MyHelper(getContext());
db.execSQL("update person set account=account+1000 where
name =?",new Object[] { "wangwu" });
db.setTransactionSuccessful();
}catch (Exception e) { Log.i("事务处理失败", e.toString());
String whereClause,new String[] whereArgs) 更新表中指定行的数据,返回值为被更新的行的数量。 Upate informtion Set price= price Where name=?
Company Logo
2.修改一条数据
public int update1(String name, String price) { SQLiteDatabase db=helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(“price", price); int number= db.update(“information", values, “name=?”, new String[]{name}); db.close(); return number; }
用于加载xml布局。
常用数据适配器(SimpleAdapter)
• 继承自BaseAdapter,实现了BaseAdapter的四个抽象方 法并进行了封装。 SimpleCursorAdapter
数据集合,data中的每一项对应 Context上下文对象 着ListView中的每一项的数据。
public SimpleAdapter(Context context, List<? extends Map<String, ?>> data , int resource, String[] from, int[] to);
Item布局的资源idMap集I合tem里布面局的相ke应y值的。控件id。
public void add(String name, String price) { SQLiteDatabase db=helper.getWritableDatabase(); ContentValues cv =new ContentValues(); cv.put("name",name); cv.put(“price", price); db.insert(“information", null, cv); db.close();
Company Logo

public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context) { super(context, "itcast.db", null, 2); }
public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE information(_id INTEGER
第6章 数据存储与访问
delete( )方法
SQLiteDatabase的delete( )方法如下定义: public int delete (String table, String whereClause,
String[] whereArgs) 该方法删除表中指定的行,返回值为被删除的行数, Delete From inforamtion Where _id= ?
常用数据适配器(BaseAdapter)
基本的适配器,使用BaseAdapter时需要实现四个方法。
方法名称
功能描述
public int getCount()
得到Item条目的总数
public Object getItem(int position)
根据position得到某个Item的对象
public long getItemId(int
• ContentValues是一种存储的机制,常用于数据库的操作。 只能存储基本类型。
Baidu Nhomakorabea
第6章 数据存储与访问
update( )方法
SQLiteDatabase的 update( )方法如下定义: public int update (String table, ContentValues values,
5.3 数据库的常用操作
– Android SDK提供的一系列操作SQLite数据库的API, 它提供了一些列用于操作数据库的方法。
第6章 数据存储与访问
insert( )方法
SQLiteDatabase的 insert( )方法如下定义: public int insert (String table, String nullColumnhack,
设置事务标志为 成功,当事务结 束时,提交事务
} finally {
db.endTransaction();
关闭数据库事务
db.close();
}
5.3.3 实战演练——绿豆通讯录
1 功能描述: 创建通讯录实现添加,查询,修改,删除联系人信息。
SQLite数据库的使用。
2 技术要点:
①用户交互界面的设计与实现 3 实现步骤: ②界面逻辑代码的设计与实现
PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), price INTEGER)");
} // 当数据库的版本号增加时调用 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
SQLiteDatabase db = helper.getWritableDatabase();
db.beginTransaction();
开启数据库事务
try {
db.execSQL("update person set account=account-1000 where
name =?",new Object[] { "zhangsan" });
• SQLite遵守ACID特性。ACID是指数据库事务正确执行 的基本要素,原子性、一致性、隔离性、持久性。
• 支持主流操作系统如windows/Linux/UNIX,和C#、 PHP、Java结合性很好,处理速度比MySQL快。
• SQLite没有服务器进程,通过文件(.db)保存数据, 该文件是跨平台的,可以放在其他平台中使用。并且支 持 NULL、INTEGER、REAL(浮点数字)、TEXT(字 符串文本)和BLOB(二进制对象)五种数据类型。
第6章 数据存储与访问
Query()方法
SQLiteDatabase的Query ( )方法如下定义:
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
public class MyHelper extends SQLiteOpenHelper { public MyHelper(Context context) { super(context, "itcast.db", null, 2); }
….
Company Logo
第6章 数据存储与访问
2. 重写onCreate(): 需要一个 SQLiteDatabase对象作为参数,根据对这个 对象填充表和初始化表结构。 3. 重写onUpgrade() : 需要三个参数,一个 SQLiteDatabase 对象,一个旧 的版本号和一个新的版本号,可以演示如何把一个数 据库从旧的模型转变到新的模型。
Company Logo
3.删除数据
public int delete1(long id){ SQLiteDatabase db = helper.getWritableDatabase(); int number = db.delete("information", "_id=?", new
String[]{id+""}); db.close(); return number; }
5.2 数据库的创建(代码建库)
第6章 数据存储与访问
1. 创建一个Java类继承父类 SQLiteOpenHelper,并 创建该类的构造函数(在其中实现父类的构造函数)。 父类构造方法四个参数:上下文环境,数据库名字, 一个可选的游标工厂(通常是 Null),一个代表正在 使用的数据库模型版本的整数。
"> </ListView>
5.4.2 常用数据适配器
– ListView控件显示数据需要进行数据适配。 Android提供一系列适配器对ListView进行数据适 配。 它就像转换器,把复杂数据按人们易于接受方 式来展示。
– 列表的适配器类型,分为以下三种: ArrayAdapter : 通常只能展示一行字符 SimpleAdapter :可以自定义出各种效果 SimpleCursorAdapter BaseAdapter:基本的适配器,包含4个抽象方法。
Select top 20 percent columns
From table
Where _id=?
Order by _id desc
Group by groupBy
Having having
Company Logo
4.查询一条数据
public boolean find(long id){
SQLiteDatabase db=helper.getReadableDatabase(); Cursor c = db.query(“information", null, "_id=?", new String[]{id+””}, null, null, null); boolean result =c.moveToNext(); c.close(); db.close(); return result;
ContentValues values) 第二个参数是用于指定空值字段的名称。 当插入的数 据行为空行或values参数值为null,将指定的这个列分 量值设为null,再插入数据库。
Company Logo
MyHelper helper=new MyHelper (this); 1. 插入一条数据