1.将数据库文件存放在attets下的schema中
2.写一个DBHelper类继承SQLiteOpenHelper
继承该类会重写
public void onCreate(SQLiteDatabase db);
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
在onCreate方法中,一般会写一个executeSchema(db, "schema.sql");
private void executeSchema(SQLiteDatabase db, String schemaName) { BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(mContext.getAssets() .open(Configuration.DBSchemaRoot+"/"+schemaName))); String line; String buffer = ""; while ((line = in.readLine()) != null) { buffer += line; if (line.trim().endsWith(";")) { db.execSQL(buffer.replace(";", "")); buffer = ""; } } } catch (IOException e) { } finally { try { if (in != null) in.close(); } catch (IOException e) {} } }
这个方法重要用于读取数据库文件里的内容
onUpgrade:
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if(newVersion <= oldVersion) { return ; } int changeCnt = newVersion - oldVersion; for(int i = 0; i < changeCnt; i++) { String schemaName = "update"+(oldVersion+i)+"_"+(oldVersion+i+1)+".sql"; executeSchema(db, schemaName); } }
3 写一个AbstractDao类
public class AbstractDao{
private Context mContext; private SQLiteDatabase db; private static final int DATABASE_VERSION = 6; public static boolean mTransaction = false; public AbstractDao(Context context) { this.mContext = context; db = new DBHelper(mContext, Configuration.DatabaseFile, null, DATABASE_VERSION).getWritableDatabase(); } protected void execute(String sql) throws SQLException { db.execSQL(sql); } protected int delete(String table, String whereClause, String[] whereArgs) { int result = db.delete(table, whereClause, whereArgs); return result; } protected long insert(String table, String nullColumnHack, ContentValues values) throws SQLException { long result = db.insertOrThrow(table, nullColumnHack, values); return result; } protected int update(String table, ContentValues values, String whereClause, String[] whereArgs) { int result = db.update(table, values, whereClause, whereArgs); return result; } protected Cursor query(String sql, String[] selectionArgs) { return db.rawQuery(sql, selectionArgs); } protected Cursor query(String table, String[] columns, String selection, String[] selectionArgs) { return db.query(table, columns, selection, selectionArgs, null, null, null); } protected int getScalarValue(String sql, String[] selectionArgs) { int ret = 0; Cursor c = query(sql, selectionArgs); if(c != null) { if (c.getCount() > 0) { c.moveToFirst(); ret = c.getInt(0); } c.close(); } return ret; } /** * This database to determine whether there * @param tableName * @return */ public int isCreateTable(String tableName) { int count = 0; String sql = "Select Count(*) From sqlite_master Where type='table' And name='"+tableName+"'"; count = this.getScalarValue(sql,null); return count; } protected void beginTransaction() { db.beginTransaction(); } protected void commit() { db.setTransactionSuccessful(); db.endTransaction(); } protected void rollback() { db.endTransaction(); } public void dispose() { synchronized(db) { if (db != null && db.isOpen()) db.close(); } } }
4其他的类继承 AbstractDao类.
注意:在调用完dao方法后 一定要记得dispose();
发表评论
-
2012/10/29
2012-10-29 18:34 0实现了 图片上下左右滑动 放大放小 显示姓名 及 单击 双击 ... -
10.25
2012-10-25 13:52 0因为自定义 长按控件后, 图片放大放小功能无法实现 所以我把它 ... -
10.23
2012-10-23 23:48 0if (allFilesIsNotDir) { // ... -
主要类
2012-10-19 10:02 0package com.picture; import ja ... -
上下滑动 左右切换 图片放大放小
2012-10-19 08:34 0大概思路已经实现了 你自己改改不太合理的地方把. 最下面那个1 ... -
2012/10/16 左右滑动,放大放小显示姓名
2012-10-16 16:49 0左右滑动,放大放小显示姓名 下午 16:46 -
2012/10/16 左右滑动,放大放小
2012-10-16 08:57 0早上8:53 -
遍历图片
2012-10-14 23:10 0package com.mp; import java. ... -
android
2012-10-11 19:01 0//通过url 获取图片 public static b ... -
Android Log详解
2012-10-08 15:53 0android.util.Log常用的方法有以下5个:Log. ... -
android ui 事件处理
2012-09-14 10:33 0view类包含了一大堆命名类似on<..>List ... -
绘图
2012-08-23 15:15 765首先,如何获取 res 中的资源 数据包package ... -
android Paint属性
2012-08-23 14:07 956/** * Paint类介绍 ... -
Android中Bitmap和Drawable
2012-08-23 11:18 776一、相关概念1、Drawable就是一个可画的对象,其可能是 ... -
http请求方式
2012-08-21 16:12 0/** * * @param url 发送 ... -
sqlite
2012-08-21 15:15 0要在Android系统中操作SQLite数据库,是通过Andr ... -
反编译教程
2012-08-21 14:06 1168一、反编译Apk得到Java源代码首先要下载两个工具:dex2 ... -
将apk安装到模拟器中
2012-08-21 13:49 8811. 将apk 放在E:\android-sdk-window ...
相关推荐
在SQLite入门与分析(七)---浅谈SQLite的虚拟机.doc中,主要讲解了SQLite如何通过虚拟机执行SQL语句。SQLite的虚拟机,也称为VDBE(Virtual Database Engine),是SQLite的核心组件。它负责解析SQL语句,将其转化为一...
SQLite 是一个开源的嵌入式关系数据库管理系统,由 D. Richard Hipp 在 2000 年发布。它被设计成轻量级、高可移植性的解决方案,适用于那些需要简单数据库功能的应用程序,尤其是嵌入式环境。SQLite 的特点是零配置...
### SQLite入门教程精要 #### 一、SQLite概览 SQLite是一种轻量级的数据库引擎,以其嵌入式特性著称。它不依赖任何独立的服务器进程或系统管理,这使得它非常适合移动设备、嵌入式系统以及桌面应用程序。根据描述...
### SQLite入门知识点详解 #### 一、SQLite简介 SQLite是一种轻量级的嵌入式数据库管理系统,最初由D. Richard Hipp在2000年发布。作为一种开源解决方案,SQLite的目标是减少应用程序在管理数据时所需的开销。它以...
我自己寻找整理的SQLite资料,希望对大家有帮助。清单如下: Android 数据库技术 sqlite3-基础教程 sqlite3使用详解 sqlite命令行手册(中文) ...SQLite入门与分析 SQLite数据库文件格式全面分析
### 嵌入式数据库SQLite入门与分析 #### 一、SQLite简介 SQLite是一种轻量级的嵌入式关系型数据库管理系统,最初于2000年由D.Richard Hipp开发并发布。作为一种嵌入式数据库,SQLite与其他传统数据库管理系统(如...
【SQLite入门】这篇文档主要针对初学者,详细介绍了SQLite数据库的下载、安装、编译以及在Visual Studio(VS)中的配置过程,同时给出了一个简单的测试代码。以下是详细的知识点: 1. **SQLite下载**: - SQLite是...
### SQLite入门教程精要 #### 一、基本简介与特性 SQLite是一款自含式、无需服务器、无需配置的事务型关系数据库引擎。由于其体积小巧(仅几百KB),非常适合嵌入到应用程序中,无需额外的数据库服务器。这使得...
还不错的sqlite入门语法,适合入门学习,对象操作 数据操作 事务处理 内置函数等
SQLite是一种开源的嵌入式关系数据库管理系统,其设计目的是为了简化软件应用程序中的数据管理任务。SQLite不依赖于外部的数据库服务器进程,而是直接嵌入到使用它的应用程序中,并与应用程序共享同一个进程空间。...